| Extracted from Pike v7.8 release 866 at 2018-07-18.

[Top]
Protocols
Protocols.Bittorrent
Protocols.Bittorrent.Torrent

# Class Protocols.Bittorrent.Torrent

Description

  Bittorrent peer - download and share. Read more about bittorrent at http://bitconjurer.org/BitTorrent/introduction.html

Example

      The smallest usable torrent downloader. As first argument,
       it expects a filename to a .torrent file.

  int main(int ac,array am) { // initialize Torrent from file: Protocols.Bittorrent.Torrent t=Protocols.Bittorrent.Torrent(); t->load_metainfo(am[1]);

  // Callback when download status changes: // t->downloads_update_status=...;

  // Callback when pieces status change (when we get new stuff): // t->pieces_update_status=...;

  // Callback when peer status changes (connect, disconnect, choked...): // t->peer_update_status=...;

  // Callback when download is completed: t->download_completed_callback= lambda() { call_out(exit,3600,0); // share for an hour, then exit };

  // Callback to print warnings (same args as sprintf): // t->warning=werror;

  // type of progress function used below: void progress(int n,int of) { /* ... */ };

  // Initiate targets from Torrent, // if target was created, no need to verify: if (t->fix_targets(1,0,progress)==1) t->verify_targets(progress);

  // Open port to listen on, // we want to do this to be able to talk to firewalled peers: t->open_port(6881);

  // Ok, start calling tracker to get peers, // and tell about us: t->start_update_tracker();

  // Finally, start the download: t->start_download();

  return -1; }

Variable do_we_strangle

  `function(.Peer:int(0..1)) Protocols.Bittorrent.Torrent.do_we_strangle`

Description

  Function to determine if we should strangle this peer. Default is to allow 100000 bytes of data over the ratio, which is 2:1 per default; upload twice as much as we get.

  Arguments are the peer, bytes in (downloaded) and bytes out (uploaded). Return 1 to strangle and 0 to allow the peer to proceed downloading again.

Variable pieces_update_status

  `function Protocols.Bittorrent.Torrent.pieces_update_status`

Description

  If set, called when we got another piece downloaded (no args).

Variable downloads_update_status

  `function Protocols.Bittorrent.Torrent.downloads_update_status`

Description

  If set, called when we start to download another piece (no args).

Variable peer_update_status

  `function Protocols.Bittorrent.Torrent.peer_update_status`

Description

  If set, called when peer status changes.

Variable download_completed_callback

  `function Protocols.Bittorrent.Torrent.download_completed_callback`

Description

  If set, called when download is completed.

Variable warning

  `function(string:void|mixed) Protocols.Bittorrent.Torrent.warning`

Description

  Called if there is a protocol error.