本文整理汇总了C++中torrent_handle::status方法的典型用法代码示例。如果您正苦于以下问题:C++ torrent_handle::status方法的具体用法?C++ torrent_handle::status怎么用?C++ torrent_handle::status使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类torrent_handle
的用法示例。
在下文中一共展示了torrent_handle::status方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: make_magnet_uri
std::string make_magnet_uri(torrent_handle const& handle)
{
if (!handle.is_valid()) return "";
std::string ret;
sha1_hash const& ih = handle.info_hash();
ret += "magnet:?xt=urn:btih:";
ret += to_hex(ih.to_string());
torrent_status st = handle.status(torrent_handle::query_name);
if (!st.name.empty())
{
ret += "&dn=";
ret += escape_string(st.name.c_str(), st.name.length());
}
std::vector<announce_entry> const& tr = handle.trackers();
for (std::vector<announce_entry>::const_iterator i = tr.begin(), end(tr.end()); i != end; ++i)
{
ret += "&tr=";
ret += escape_string(i->url.c_str(), i->url.length());
}
std::set<std::string> seeds = handle.url_seeds();
for (std::set<std::string>::iterator i = seeds.begin()
, end(seeds.end()); i != end; ++i)
{
ret += "&ws=";
ret += escape_string(i->c_str(), i->length());
}
return ret;
}
示例2: make_magnet_uri
std::string make_magnet_uri(torrent_handle const& handle)
{
if (!handle.is_valid()) return "";
char ret[1024];
sha1_hash const& ih = handle.info_hash();
int num_chars = snprintf(ret, sizeof(ret), "magnet:?xt=urn:btih:%s"
, base32encode(std::string((char const*)&ih[0], 20)).c_str());
std::string name = handle.name();
if (!name.empty())
num_chars += snprintf(ret + num_chars, sizeof(ret) - num_chars, "&dn=%s"
, escape_string(name.c_str(), name.length()).c_str());
std::string tracker;
torrent_status st = handle.status();
if (!st.current_tracker.empty())
{
tracker = st.current_tracker;
}
else
{
std::vector<announce_entry> const& tr = handle.trackers();
if (!tr.empty()) tracker = tr[0].url;
}
if (!tracker.empty())
num_chars += snprintf(ret + num_chars, sizeof(ret) - num_chars, "&tr=%s"
, escape_string(tracker.c_str(), tracker.size()).c_str());
return ret;
}
示例3: make_magnet_uri
std::string make_magnet_uri(torrent_handle const& handle)
{
if (!handle.is_valid()) return "";
std::string ret;
sha1_hash const& ih = handle.info_hash();
ret += "magnet:?xt=urn:btih:";
ret += aux::to_hex(ih);
torrent_status st = handle.status(torrent_handle::query_name);
if (!st.name.empty())
{
ret += "&dn=";
ret += escape_string(st.name);
}
for (auto const& tr : handle.trackers())
{
ret += "&tr=";
ret += escape_string(tr.url);
}
for (auto const& s : handle.url_seeds())
{
ret += "&ws=";
ret += escape_string(s);
}
return ret;
}
示例4: make_magnet_uri
std::string make_magnet_uri(torrent_handle const& handle)
{
std::stringstream ret;
if (!handle.is_valid()) return ret.str();
std::string name = handle.name();
ret << "magnet:?xt=urn:btih:" << base32encode(
std::string((char*)handle.info_hash().begin(), 20));
if (!name.empty())
ret << "&dn=" << escape_string(name.c_str(), name.length());
torrent_status st = handle.status();
if (!st.current_tracker.empty())
{
ret << "&tr=" << escape_string(st.current_tracker.c_str()
, st.current_tracker.length());
}
else
{
std::vector<announce_entry> const& tr = handle.trackers();
if (!tr.empty())
{
ret << "&tr=" << escape_string(tr[0].url.c_str()
, tr[0].url.length());
}
}
return ret.str();
}
示例5: wait_for_complete
void wait_for_complete(lt::session& ses, torrent_handle h)
{
for (int i = 0; i < 70; ++i)
{
print_alerts(ses, "ses1");
torrent_status st = h.status();
fprintf(stderr, "%f %%\n", st.progress_ppm / 10000.f);
if (st.progress_ppm == 1000000) return;
test_sleep(500);
}
TEST_ERROR("torrent did not finish");
}
示例6: wait_for_complete
void wait_for_complete(lt::session& ses, torrent_handle h)
{
int last_progress = 0;
clock_type::time_point last_change = clock_type::now();
for (int i = 0; i < 400; ++i)
{
print_alerts(ses, "ses1");
torrent_status st = h.status();
fprintf(stderr, "%f %%\n", st.progress_ppm / 10000.f);
if (st.progress_ppm == 1000000) return;
if (st.progress_ppm != last_progress)
{
last_progress = st.progress_ppm;
last_change = clock_type::now();
}
if (clock_type::now() - last_change > seconds(10)) break;
test_sleep(500);
}
TEST_ERROR("torrent did not finish");
}