libtorrent-rasterbarの使い方メモ

マイナーなライブラリなんで、日本語で解説してあるサイトは皆無っぽいです。
まあ公式ページ↓に詳しい使い方書いてあるから必要ないかもしれませんけど
http://www.rasterbar.com/products/libtorrent/manual.html

基本的な流れ

  1. sessionを作る(コンストラクタ)
  2. 拡張機能(DHT, LSD, UPnP, NAT-PMP)を開始する
    • start_dht();
    • start_lsd();
    • start_upnp();
    • start_natpmp();
  3. torrentファイルをパースする
    • 大抵の場合torrentファイルのパスをadd_torrent_paramsに代入して、add_torrent();関数を実行後、返り値のtorrent_handleを取得という流れ
  4. メインループ、
    • 必要に応じてストレージ監視など、ダウンロード制御する
  5. 終了前にダウンロード状態を保存する
    • torrent_handleを使いsave_resume_data()を実行
  6. sessionを破棄する(デストラクタ)

これ以外の詳細な使い方はexample/client-test.cppをみればわかります

主要クラスの役割

  • "libtorrent/torrent_handle.hpp"
    • torrent_handle:各torrentのダウンロードの制御を行うハンドラクラス、帯域制御とかできる
  • "libtorrent/torrent_info.hpp"
    • torrent_info:ファイル内の情報を見る、例えば何ファイル何サイズあるとか
  • "libtorrent/bitfield.hpp"
    • bitfield:ダウンロード状況などをビットフィールドで管理しているクラス
  • "libtorrent/storage.hpp"
    • storage_interface:ファイル保存のためのストレージを制御する、例えばリネームなどが可能

ビルド方法

example/Makefileとかを参考にして自分で作ってみましょう
(libtorrent-rasterbar以外にもlibpthreadとかzlibとかあって、何が必要なのか正直わからなかった)