26 #ifndef NFD_DAEMON_FW_FORWARDER_HPP
27 #define NFD_DAEMON_FW_FORWARDER_HPP
80 return m_faceTable.
get(
id);
90 m_faceTable.
add(face);
96 return *m_unsolicitedDataPolicy;
102 BOOST_ASSERT(policy !=
nullptr);
103 m_unsolicitedDataPolicy = std::move(policy);
155 return m_measurements;
161 return m_strategyChoice;
167 return m_deadNonceList;
173 return m_networkRegionTable;
180 onIncomingInterest(Face& inFace,
const Interest& interest);
185 onInterestLoop(Face& inFace,
const Interest& interest);
190 onContentStoreMiss(
const Face& inFace,
const shared_ptr<pit::Entry>& pitEntry,
191 const Interest& interest);
196 onContentStoreHit(
const Face& inFace,
const shared_ptr<pit::Entry>& pitEntry,
197 const Interest& interest,
const Data& data);
202 onOutgoingInterest(
const shared_ptr<pit::Entry>& pitEntry, Face& outFace,
203 bool wantNewNonce =
false);
208 onInterestReject(
const shared_ptr<pit::Entry>& pitEntry);
213 onInterestUnsatisfied(
const shared_ptr<pit::Entry>& pitEntry);
220 onInterestFinalize(
const shared_ptr<pit::Entry>& pitEntry,
bool isSatisfied,
221 time::milliseconds dataFreshnessPeriod = time::milliseconds(-1));
226 onIncomingData(Face& inFace,
const Data& data);
231 onDataUnsolicited(Face& inFace,
const Data& data);
236 onOutgoingData(
const Data& data, Face& outFace);
241 onIncomingNack(Face& inFace,
const lp::Nack& nack);
246 onOutgoingNack(
const shared_ptr<pit::Entry>& pitEntry,
const Face& outFace,
const lp::NackHeader& nack);
250 setUnsatisfyTimer(
const shared_ptr<pit::Entry>& pitEntry);
253 setStragglerTimer(
const shared_ptr<pit::Entry>& pitEntry,
bool isSatisfied,
254 time::milliseconds dataFreshnessPeriod = time::milliseconds(-1));
257 cancelUnsatisfyAndStragglerTimer(
pit::Entry& pitEntry);
264 insertDeadNonceList(
pit::Entry& pitEntry,
bool isSatisfied,
265 time::milliseconds dataFreshnessPeriod, Face* upstream);
273 template<
class Function>
275 dispatchToStrategy(
pit::Entry& pitEntry, Function trigger)
278 trigger(m_strategyChoice.findEffectiveStrategy(pitEntry));
282 ForwarderCounters m_counters;
284 FaceTable m_faceTable;
285 unique_ptr<fw::UnsolicitedDataPolicy> m_unsolicitedDataPolicy;
291 Measurements m_measurements;
292 StrategyChoice m_strategyChoice;
293 DeadNonceList m_deadNonceList;
294 NetworkRegionTable m_networkRegionTable;
302 #endif // NFD_DAEMON_FW_FORWARDER_HPP
Copyright (c) 2014-2016, Regents of the University of California, Arizona Board of Regents...
StrategyChoice & getStrategyChoice()
Face * get(FaceId id) const
get face by FaceId
#define PROTECTED_WITH_TESTS_ELSE_PRIVATE
DeadNonceList & getDeadNonceList()
void add(shared_ptr< Face > face)
add a face
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
stores a collection of producer region names
void startProcessInterest(Face &face, const Interest &interest)
start incoming Interest processing
represents the Dead Nonce list
void setUnsolicitedDataPolicy(unique_ptr< fw::UnsolicitedDataPolicy > policy)
determines how to process an unsolicited Data
FaceTable & getFaceTable()
void addFace(shared_ptr< Face > face)
add new Face
counters provided by Forwarder
represents a forwarding strategy
#define VIRTUAL_WITH_TESTS
Copyright (c) 2014-2016, Regents of the University of California, Arizona Board of Regents...
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE
const ForwarderCounters & getCounters() const
fw::UnsolicitedDataPolicy & getUnsolicitedDataPolicy() const
uint64_t FaceId
identifies a face
void startProcessData(Face &face, const Data &data)
start incoming Data processing
Measurements & getMeasurements()
NetworkRegionTable & getNetworkRegionTable()
Face * getFace(FaceId id) const
get existing Face
void startProcessNack(Face &face, const lp::Nack &nack)
start incoming Nack processing