本文整理汇总了C++中ptr_lib::shared_ptr::matchesName方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::matchesName方法的具体用法?C++ shared_ptr::matchesName怎么用?C++ shared_ptr::matchesName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ptr_lib::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::matchesName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doCleanup
void
MemoryContentCache::operator()
(const ptr_lib::shared_ptr<const Name>& prefix,
const ptr_lib::shared_ptr<const Interest>& interest, Face& face,
boost::uint64_t interestFilterId,
const ptr_lib::shared_ptr<const InterestFilter>& filter)
{
doCleanup();
const Name::Component* selectedComponent = 0;
Blob selectedEncoding;
// We need to iterate over both arrays.
size_t totalSize = staleTimeCache_.size() + noStaleTimeCache_.size();
for (size_t i = 0; i < totalSize; ++i) {
const Content* content;
if (i < staleTimeCache_.size())
content = staleTimeCache_[i].get();
else
// We have iterated over the first array. Get from the second.
content = noStaleTimeCache_[i - staleTimeCache_.size()].get();
if (interest->matchesName(content->getName())) {
if (interest->getChildSelector() < 0) {
// No child selector, so send the first match that we have found.
face.send(*content->getDataEncoding());
return;
}
else {
// Update selectedEncoding based on the child selector.
const Name::Component* component;
if (content->getName().size() > interest->getName().size())
component = &content->getName().get(interest->getName().size());
else
component = &emptyComponent_;
bool gotBetterMatch = false;
if (!selectedEncoding)
// Save the first match.
gotBetterMatch = true;
else {
if (interest->getChildSelector() == 0) {
// Leftmost child.
if (*component < *selectedComponent)
gotBetterMatch = true;
}
else {
// Rightmost child.
if (*component > *selectedComponent)
gotBetterMatch = true;
}
}
if (gotBetterMatch) {
selectedComponent = component;
selectedEncoding = content->getDataEncoding();
}
}
}
}
if (selectedEncoding)
// We found the leftmost or rightmost child.
face.send(*selectedEncoding);
else {
// Call the onDataNotFound callback (if defined).
map<string, OnInterestCallback>::iterator onDataNotFound =
onDataNotFoundForPrefix_.find(prefix->toUri());
if (onDataNotFound != onDataNotFoundForPrefix_.end() &&
onDataNotFound->second)
onDataNotFound->second(prefix, interest, face, interestFilterId, filter);
}
}