static void onRegisterFailed(const ptr_lib::shared_ptr<const Name>& prefix) { cout << "Register failed for prefix " << prefix->toUri() << endl; }
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); } }