本文整理汇总了C++中torrent_handle::name方法的典型用法代码示例。如果您正苦于以下问题:C++ torrent_handle::name方法的具体用法?C++ torrent_handle::name怎么用?C++ torrent_handle::name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类torrent_handle
的用法示例。
在下文中一共展示了torrent_handle::name方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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;
}
示例2: 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();
}
示例3: UnregisterHandle
void TorrentDownloadManager::UnregisterHandle(torrent_handle h){
this->dlmutex.Lock();
if(!this->handle_map.erase(h)){
try{
syslog(LOG_ERR,"Erase of handle %s failed",h.name().c_str());
}catch(libtorrent::invalid_handle& err){
syslog(LOG_ERR,"Erase of invalid handle");
}
}
this->dlmutex.Unlock();
}
示例4: realAddTorrent
void MainWindow::realAddTorrent(QString torrentFile, QString torrentPath, QString mountPath) {
if (!QFile::exists(torrentFile) && !isMagnet(torrentFile))
die("torrent file not found");
standartText = ("Torrent file: " + torrentFile + "\nDownload path: " + torrentPath + "\nMount path: " + mountPath + "\n").toLocal8Bit();
standartTextLen = standartText.size();
updateStandartText();
if (torrentPath[torrentPath.length() - 1] != QChar('/'))
torrentPath += "/";
if (mountPath[mountPath.length() - 1] != QChar('/'))
mountPath += "/";
resumeSavePath = torrentPath;
add_torrent_params p;
p.storage_mode = libtorrent::storage_mode_allocate;
if (isMagnet(torrentFile)) {
int i;
for (i = 1; torrentFile[i] != '='; i++);
for (i = i + 1; torrentFile[i] != '='; i++);
QString url;
for (i = i + 1; torrentFile[i] != '&'; i++)
url += torrentFile[i];
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
QString name = QUrl(url).toString().replace("+", " ");
#else
QString name = QUrl(url).toString(QUrl::PreferLocalFile).replace("+", " ");
#endif
p.save_path = (torrentPath + name + "/").toStdString();
const torrent_handle h = libtorrent::add_magnet_uri(*session, torrentFile.toStdString(), p);
main = new Torrent(torrentPath + QString::fromStdString(h.name()), mountPath + QString::fromStdString(h.name()), h, this);
} else {
torrent_info *inf = new libtorrent::torrent_info(torrentFile.toStdString());
p.ti = inf;
p.save_path = (torrentPath + QString::fromStdString(inf->name()) + "/").toStdString();
main = new Torrent(torrentPath + QString::fromStdString(inf->name()), mountPath + QString::fromStdString(inf->name()), session->add_torrent(p), this);
}
setupTimers();
}