本文整理汇总了C++中QueueItemPtr::getToken方法的典型用法代码示例。如果您正苦于以下问题:C++ QueueItemPtr::getToken方法的具体用法?C++ QueueItemPtr::getToken怎么用?C++ QueueItemPtr::getToken使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QueueItemPtr
的用法示例。
在下文中一共展示了QueueItemPtr::getToken方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
pair<QueueItem::StringMap::const_iterator, bool> FileQueue::add(QueueItemPtr& qi) noexcept {
dcassert(queueSize >= 0);
auto ret = pathQueue.emplace(const_cast<string*>(&qi->getTarget()), qi);
if (ret.second) {
tthIndex.emplace(const_cast<TTHValue*>(&qi->getTTH()), qi);
if (!qi->isSet(QueueItem::FLAG_USER_LIST) && !qi->isSet(QueueItem::FLAG_CLIENT_VIEW) && !qi->isSet(QueueItem::FLAG_FINISHED)) {
dcassert(qi->getSize() >= 0);
queueSize += qi->getSize();
}
tokenQueue.emplace(qi->getToken(), qi);
}
return ret;
}
示例2: remove
void FileQueue::remove(QueueItemPtr& qi) noexcept {
//TargetMap
auto f = pathQueue.find(const_cast<string*>(&qi->getTarget()));
if (f != pathQueue.end()) {
pathQueue.erase(f);
if (!qi->isSet(QueueItem::FLAG_USER_LIST) && (!qi->isSet(QueueItem::FLAG_FINISHED) || !qi->getBundle()) && !qi->isSet(QueueItem::FLAG_CLIENT_VIEW)) {
dcassert(qi->getSize() >= 0);
queueSize -= qi->getSize();
}
}
dcassert(queueSize >= 0);
//TTHIndex
auto s = tthIndex.equal_range(const_cast<TTHValue*>(&qi->getTTH()));
dcassert(s.first != s.second);
auto k = find(s | map_values, qi);
if (k.base() != s.second) {
tthIndex.erase(k.base());
}
// Tokens
tokenQueue.erase(qi->getToken());
}