26 #ifndef NFD_DAEMON_FW_FORWARDER_HPP
27 #define NFD_DAEMON_FW_FORWARDER_HPP
40 #include "ns3/ndnSIM/model/cs/ndn-content-store.hpp"
130 onIncomingInterest(
Face& inFace,
const Interest& interest);
135 onInterestLoop(
Face& inFace,
const Interest& interest,
136 shared_ptr<pit::Entry> pitEntry);
141 onOutgoingInterest(shared_ptr<pit::Entry> pitEntry,
Face& outFace,
142 bool wantNewNonce =
false);
147 onInterestReject(shared_ptr<pit::Entry> pitEntry);
152 onInterestUnsatisfied(shared_ptr<pit::Entry> pitEntry);
159 onInterestFinalize(shared_ptr<pit::Entry> pitEntry,
bool isSatisfied,
160 const time::milliseconds& dataFreshnessPeriod = time::milliseconds(-1));
165 onIncomingData(
Face& inFace,
const Data& data);
170 onDataUnsolicited(
Face& inFace,
const Data& data);
175 onOutgoingData(
const Data& data,
Face& outFace);
179 setUnsatisfyTimer(shared_ptr<pit::Entry> pitEntry);
182 setStragglerTimer(shared_ptr<pit::Entry> pitEntry,
bool isSatisfied,
183 const time::milliseconds& dataFreshnessPeriod = time::milliseconds(-1));
186 cancelUnsatisfyAndStragglerTimer(shared_ptr<pit::Entry> pitEntry);
193 insertDeadNonceList(
pit::Entry& pitEntry,
bool isSatisfied,
194 const time::milliseconds& dataFreshnessPeriod,
200 dispatchToStrategy(shared_ptr<pit::Entry> pitEntry,
function<
void(
fw::Strategy*)> trigger);
202 template<
class Function>
204 dispatchToStrategy(shared_ptr<pit::Entry> pitEntry, Function trigger);
220 shared_ptr<NullFace> m_csFace;
222 ns3::Ptr<ns3::ndn::ContentStore> m_csFromNdnSim;
224 static const Name LOCALHOST_NAME;
242 inline shared_ptr<Face>
245 return m_faceTable.
get(
id);
251 m_faceTable.
add(face);
257 this->onIncomingInterest(face, interest);
263 this->onIncomingData(face, data);
293 return m_measurements;
299 return m_strategyChoice;
305 return m_deadNonceList;
316 Forwarder::dispatchToStrategy(shared_ptr<pit::Entry> pitEntry,
function<
void(
fw::Strategy*)> trigger)
318 template<
class Function>
320 Forwarder::dispatchToStrategy(shared_ptr<pit::Entry> pitEntry, Function trigger)
323 fw::Strategy& strategy = m_strategyChoice.findEffectiveStrategy(*pitEntry);
329 #endif // NFD_DAEMON_FW_FORWARDER_HPP
signal::Signal< Forwarder, pit::Entry, Face, Data > beforeSatisfyInterest
trigger before PIT entry is satisfied
represents the Dead Nonce list
represents the Strategy Choice table
contains counters on forwarder
StrategyChoice & getStrategyChoice()
FaceTable & getFaceTable()
void addFace(shared_ptr< Face > face)
add new Face
void add(shared_ptr< Face > face)
DeadNonceList & getDeadNonceList()
represents the Interest Table
#define PROTECTED_WITH_TESTS_ELSE_PRIVATE
const ForwarderCounters & getCounters() const
void onData(Face &face, const Data &data)
signal::Signal< Forwarder, pit::Entry > beforeExpirePendingInterest
trigger before PIT entry expires
Measurements & getMeasurements()
shared_ptr< Face > getFace(FaceId id) const
get existing Face
represents a forwarding strategy
void setCsFromNdnSim(ns3::Ptr< ns3::ndn::ContentStore > cs)
#define VIRTUAL_WITH_TESTS
Copyright (c) 2014, Regents of the University of California, Arizona Board of Regents, Colorado State University, University Pierre & Marie Curie, Sorbonne University, Washington University in St.
void onInterest(Face &face, const Interest &interest)
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE
shared_ptr< Face > get(FaceId id) const