[ndnSIM] In content-store-impl.hpp (add method) trying to get the hopCount field in Data Packet
Amir Ibrahim
a.ibrahim at fci-cu.edu.eg
Wed Apr 26 13:13:27 PDT 2017
I found the reason:
in the NFD/fw/forwarder.cpp
the hopCount field is removed before calling content-store-impl Add()
method.
void
Forwarder::onIncomingData(Face& inFace, const Data& data)
{
// receive Data
NFD_LOG_DEBUG("onIncomingData face=" << inFace.getId() << " data=" <<
data.getName());
data.setTag(make_shared<lp::IncomingFaceIdTag>(inFace.getId()));
++m_counters.nInData;
// /localhost scope control
bool isViolatingLocalhost = inFace.getScope() ==
ndn::nfd::FACE_SCOPE_NON_LOCAL &&
scope_prefix::LOCALHOST.isPrefixOf(data.getName());
if (isViolatingLocalhost) {
NFD_LOG_DEBUG("onIncomingData face=" << inFace.getId() <<
" data=" << data.getName() << " violates /localhost");
// (drop)
return;
}
// PIT match
pit::DataMatchResult pitMatches = m_pit.findAllDataMatches(data);
if (pitMatches.begin() == pitMatches.end()) {
// goto Data unsolicited pipeline
this->onDataUnsolicited(inFace, data);
return;
}
shared_ptr<Data> dataCopyWithoutTag = make_shared<Data>(data);
dataCopyWithoutTag->removeTag<lp::HopCountTag>();
// CS insert
if (m_csFromNdnSim == nullptr)
m_cs.insert(*dataCopyWithoutTag);
else
m_csFromNdnSim->Add(dataCopyWithoutTag);
My question is why is the hopCount field removed?
On Wed, Apr 26, 2017 at 3:50 PM, Amir Ibrahim <a.ibrahim at fci-cu.edu.eg>
wrote:
> Dear ndnSim users and experts,
> I'm trying to modify the caching strategy in a way that
> requires accessing the hopCount field in the data packet.
>
> Below is my trial to access the hopCount field in data packet:
>
> in content-store-impl.hpp (add method):
>
> template<class Policy>
> bool
> ContentStoreImpl<Policy>::Add(shared_ptr<const Data> data)
> {
> NS_LOG_FUNCTION(this << data->getName());
>
> int TSB = 0;
> auto TSBTag = data->getTag<lp::HopCountTag>();
> if (TSBTag != nullptr) {
> TSB = *TSBTag;
> }
> std::cout<<"in CS Impl, found HopCount = "<<TSB<<" \n";
>
> Ptr<entry> newEntry = Create<entry>(this, data);
> std::pair<typename super::iterator, bool> result =
> super::insert(data->getName(), newEntry);
>
> if (result.first != super::end()) {
> if (result.second) {
> newEntry->SetTrie(result.first);
>
> m_didAddEntry(newEntry);
> std::cout<<"inside contentStoreImpl, new entry is added"<<"\n";
> return true;
> }
> else {
> // should we do anything?
> // update payload? add new payload?
> return false;
> }
> }
> else
> return false; // cannot insert entry
> }
>
> The problem is that, the pointer (TSBTag) is always null.
>
> Is there any clue why is this happening? any suggestions how to get the
> hop count field of data packet from within the content-store-impl.hpp Add
> method.
>
> --
> Regards
> Amir I. Mohamad
> Assistant Lecturer
> Faculty of Computers & Information
> IT Dept. Cairo University
>
--
Regards
Amir I. Mohamad
Assistant Lecturer
Faculty of Computers & Information
IT Dept. Cairo University
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20170426/923724ce/attachment.html>
More information about the ndnSIM
mailing list