Monday, December 05, 2005

libtorrent reloaded

here is the original homepage

here is the documentation page

for compiling one needs:
Boost Build System V2

the following description is taken from here:


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.

File handler:

· 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)

Requirements:

· 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.

No comments: