Search code examples
libtorrentlibtorrent-rasterbar

libtorrent new piece alerts


I am developing an application that will stream multimedia files over torrents.

The backend needs to serve new pieces to the frontend as they arrive.

I need a mechanism to get notified when new pieces have arrived and been verified. From what I can tell, I could do this using block_finished_alerts. I would keep track of which blocks have arrived for a given piece, and read the piece when all blocks have arrived.

This solution seems kind of roundabout and I was wondering if there was a better way.


Solution

  • What you're asking for is called piece_finished_alert. It's posted every time a new piece completes downloading and passes the hash-check. To read a piece from disk, you may use torrent_handle::read_piece() (and get the result in read_piece_alert).

    However, if you want to stream media, you probably want to use torrent_handle::set_piece_deadline() and set the flag to send read_piece_alerts as pieces come in. This will invoke the built-in streaming feature of libtorrent.