В настоящее время я работаю с Ragnar, который является оболочкой CLI Libtorrent.
Я наткнулся на кирпичную стену. Возможно, это недостаток реализации оболочки, которую я использую, или я просто неправильно понял документацию Libtorrent API, но я не могу понять, как правильно сохранить/загрузить текущие данные состояния сеанса.
Моя текущая цель, как я могу лучше всего сказать, состоит в том, чтобы сохранить все torrent_handles
в текущем сеансе, чтобы при следующем запуске торрент-клиента, над которым я работаю, я мог загрузить их автоматически при запуске и возобновить загрузку/раздачу.
Я все еще не уверен, должен ли я сделать это, сохранив состояние сеанса или нет. Согласно документации по API:
Аргументы flags, переданные в save_state, можно использовать для фильтрации частей состояния сеанса, которые необходимо сохранить. По умолчанию сохраняется все состояние (кроме отдельных торрентов).
Но я не вижу флага, относящегося к 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);
}
Это должно быть легко исправить, но я что-то упустил? Я пытаюсь сохранить через неправильный механизм?