LibTorrent description Download
LibTorrent is a BitTorrent library written in C++ for Unix. It is designed to avoid the redundant buffers and data copying that most (all?) other BitTorrent implementations suffer from.
The library is single-threaded and the client handles the select loop. An interactive ncurses client is included as an example.
Here are some key features of "LibTorrent":
· The client has full control over the polling of sockets.
· Sigc++ signals makes i easy for the client to react to events.
· Fast resume which checks the file modification time.
Direct reading and writing from network to mmap'ed files:
· Avoids duplication of data where both the application and the kernel has a copy of the file chunk.
· Unused chunks get thrown out or written to disk instead of the swap.
· Kernel handles caching of the file.
File hash check:
· Uses the same thread.
· Client can control the rate. (Will be improved)
· Non-blocking and preload to memory with the mincore and madvise system calls.
· Fine-grained use of file read/write permissions, allows seeding of read-only files.
· Allows torrents with unlimited number of files.
· Opens closed files when mapping chunks to memory, with graceful error handling.
· Support for files larger than 2 GB.
· Different download priorities for files in the torrent.
· Multi-tracker support.
· No dependency on any specific HTTP library, the client implements a wrapper class.
· Dynamic request pipe size.
· Upload and download throttle.
· And much more i haven't bothered mentioning. (nor implementing)
· libsigc++ 2.0
What's New in This Release:
· Replaced most of the sigc++ slots used internally in libtorrent with my own lightweight functor. This saves some 600kb in debugging symbols.
· Various bug fixes.
When you hear hooves, think horse, not zebra
5 hours ago