Matt Joiner
d039436f55
Significant progress and improvements
...
Piece state is broken up into several dimensions.
Implement keep-alive in connection writer.
Lazily hash pieces, only as requested.
Replace client actor mechanism with a mutex.
Fix runConnection/connectionLoop/handshake misnomers.
Fix broken reading from partially complete pieces.
2013-10-21 01:07:01 +11:00
Matt Joiner
03b1af07cd
Always finish off partially downloaded pieces
2013-10-15 19:42:30 +11:00
Matt Joiner
0a5043ba69
Implement prioritizing of torrent data regions based on FS activity
2013-10-15 01:39:12 +11:00
Matt Joiner
5c0ff3ff5f
Torrent client publishes data ready information; torrentfs supports file reads
2013-10-13 23:16:21 +11:00
Matt Joiner
43418e9f65
Fix bugs in the new WriteSectionTo hashing implementation
2013-10-07 18:58:33 +11:00
Matt Joiner
a44accadbe
Create more efficient writer method for MMapSpan for use with hashing
2013-10-07 10:35:10 +11:00
Matt Joiner
e1526b2863
Support browsing torrents in the filesystem
2013-10-07 06:00:35 +11:00
Matt Joiner
8e435ea9e2
Need executable permissions on torrent data directories
2013-10-06 21:12:44 +11:00
Matt Joiner
68e189d477
Start implementing torrentfs binary
2013-10-06 18:01:39 +11:00
Matt Joiner
5dbd675be6
Fix TestHaveEncode now that message length prefixes are actually included in Marshal output
2013-10-06 16:05:03 +11:00
Matt Joiner
4209216696
BEP20
2013-10-02 20:12:05 +10:00
Matt Joiner
39660d4e9d
Implement writing of chunks as they arrive
2013-10-02 19:55:03 +10:00
Matt Joiner
381c6bef68
Failing WriteAt should return ErrShortWrite
...
See the implementation of io.Copy.
2013-10-02 19:54:23 +10:00
Matt Joiner
7bc8524d24
Mostly handle Piece messages, and kick off a piece check when all the chunks are done
2013-10-02 17:57:59 +10:00
Matt Joiner
beb599698f
Decoding of Piece messages, and checking entire message is consumed
2013-10-02 17:57:19 +10:00
Matt Joiner
28531a4fcc
Fix request/chunk confusion, missing outgoing message prefix, protocol tests; improve request triggering
2013-10-01 18:43:18 +10:00
Matt Joiner
081a6805c5
Implementing bitfields and connection message handling
2013-09-30 21:51:08 +10:00
Matt Joiner
abf5c92488
Implement peer connection writer, optimizer and handshake
2013-09-29 16:45:17 +10:00
Matt Joiner
28c7c6a5d7
Fix race conditions
2013-09-29 16:44:37 +10:00
Matt Joiner
fe80bf2f2f
BytesInfoHash wasn't actually initializing the info hash
2013-09-29 16:43:35 +10:00
Matt Joiner
978aa1f0c8
Don't rely on *os.File finalizer for close
2013-09-29 14:20:18 +10:00
Matt Joiner
ac254e95f2
Prevent false-positive race conditions
2013-09-29 14:18:43 +10:00
Matt Joiner
7870d20573
Begin implementing the adding of peers, and initiating of connections
2013-09-29 08:11:24 +10:00
Matt Joiner
ddd4382474
Handle actorTask messages
2013-09-29 04:05:09 +10:00
Matt Joiner
805897afb5
Can't send to torrentFinished while handling an event
2013-09-29 04:04:46 +10:00
Matt Joiner
b4989a370f
Fix crash due to torrent.MetaInfo being unset
2013-09-29 04:03:36 +10:00
Matt Joiner
aefe754698
Create torrent data files with at least the required size
...
Truncate is required or use of mmap'd region beyond file length raises SIGBUS.
2013-09-29 04:03:04 +10:00
Matt Joiner
816c263760
Start implementing a basic client
2013-09-26 19:49:15 +10:00
Matt Joiner
0866ce3579
Add some basic protocol definitions, this will be improved in the future
2013-09-26 13:43:46 +10:00
Matt Joiner
d7ed035ef1
Add torrent-verify, simple exe that logs matching pieces from a torrent file and torrent path
2013-09-26 13:43:08 +10:00
Matt Joiner
3d1fb69e36
Add torrent.Mmap and MmapSpan, types that abstract memory-mapped torrent data
2013-09-26 13:42:24 +10:00
Matt Joiner
2a9d48d09f
Add cmds 'torrent-create' and 'torrent-metainfo-pprint' using nsf's libtorgo
2013-09-19 17:00:51 +10:00