【发布时间】:2014-10-28 15:11:57
【问题描述】:
我目前正在使用 Ragnar,它是一个 CLI Libtorrent 包装器。
我撞到了一堵砖墙。也许这是我正在使用的包装器的实现缺陷,或者我只是误解了 Libtorrent API 文档,但我无法弄清楚如何正确保存/加载当前的 Session 状态数据。
我目前的目标,我可以最好地说明,是在当前会话中保存所有torrent_handles,这样当我下次运行我正在使用的 torrent 客户端时,我可以在启动时自动加载它们并继续下载/播种。
我仍然不确定是否应该通过保存会话状态来执行此操作。根据API documentation's 的措辞:
传递给 save_state 的 flags 参数可用于过滤要保存的会话状态的哪些部分。默认情况下,所有状态都会保存(单个种子除外)。
但我看不到与 individual torrents 相关的标志:
enum save_state_flags_t
{
save_settings = 0x001,
save_dht_settings = 0x002,
save_dht_state = 0x004,
save_proxy = 0x008,
save_i2p_proxy = 0x010,
save_encryption_settings = 0x020,
save_as_map = 0x040,
save_feeds = 0x080
};
此外,包装器目前被硬编码为不接受这些标志:
cli::array<byte>^ Session::SaveState()
{
libtorrent::entry entry;
this->_session->save_state(entry);
return Utils::GetByteArrayFromLibtorrentEntry(entry);
}
这应该很容易解决,但我错过了什么吗?我是否试图通过错误的机制进行保存?
【问题讨论】:
标签: c# c++-cli libtorrent