26 #ifndef NFD_DAEMON_FW_ASF_MEASUREMENTS_HPP 27 #define NFD_DAEMON_FW_ASF_MEASUREMENTS_HPP 40 typedef time::duration<double, boost::micro>
Rtt;
73 computeSrtt(Rtt previousSrtt, Rtt currentRtt);
84 static const double ALPHA;
95 class Error :
public std::runtime_error
100 :
std::runtime_error(what)
110 setTimeoutEvent(
const scheduler::EventId&
id,
const Name& interestName);
115 m_measurementExpirationId = id;
118 const scheduler::EventId&
121 return m_measurementExpirationId;
125 cancelTimeoutEvent(
const Name& prefix);
130 return m_isTimeoutScheduled;
134 recordRtt(
const shared_ptr<pit::Entry>& pitEntry,
const Face& inFace);
148 return m_rttStats.computeRto();
154 return m_rttStats.getRtt();
160 return m_rttStats.getSrtt();
172 return m_nSilentTimeouts;
178 m_nSilentTimeouts = nSilentTimeouts;
183 cancelTimeoutEvent();
186 doesNameMatchLastInterest(
const Name& name);
190 Name m_lastInterestName;
193 scheduler::EventId m_measurementExpirationId;
196 scheduler::EventId m_timeoutEventId;
197 bool m_isTimeoutScheduled;
198 size_t m_nSilentTimeouts;
226 expireFaceInfo(
FaceId faceId);
234 if (m_fit.find(faceId) != m_fit.end()) {
235 return &m_fit.at(faceId);
245 return m_fit.find(faceId);
257 return m_fit.emplace(faceId,
FaceInfo()).first;
263 return m_isProbingDue;
269 m_isProbingDue = isProbingDue;
275 return m_hasFirstProbeBeenScheduled;
281 m_hasFirstProbeBeenScheduled = hasBeenScheduled;
288 bool m_hasFirstProbeBeenScheduled;
303 getFaceInfo(
const fib::Entry& fibEntry,
const Interest& interest,
FaceId faceId);
306 getOrCreateFaceInfo(
const fib::Entry& fibEntry,
const Interest& interest,
FaceId faceId);
309 getNamespaceInfo(
const Name& prefix);
312 getOrCreateNamespaceInfo(
const fib::Entry& fibEntry,
const Interest& interest);
319 static constexpr time::microseconds MEASUREMENTS_LIFETIME = 300_s;
322 MeasurementsAccessor& m_measurements;
329 #endif // NFD_DAEMON_FW_ASF_MEASUREMENTS_HPP
RttStats::Rtt getRtt() const
represents a Measurements entry
bool hasSrttMeasurement() const
void addRttMeasurement(RttEstimator::Duration &durationRtt)
implements the Mean-Deviation RTT estimator
const FaceInfoTable::iterator insert(FaceId faceId)
RttStats::Rtt getSrtt() const
time::duration< double, boost::micro > Rtt
FaceInfoTable::iterator end()
void setIsProbingDue(bool isProbingDue)
time::microseconds Duration
Table::const_iterator iterator
FaceInfoTable::iterator find(FaceId faceId)
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
contains arbitrary information forwarding strategy places on table entries
void setHasFirstProbeBeenScheduled(bool hasBeenScheduled)
Error(const std::string &what)
const scheduler::EventId & getMeasurementExpirationEventId()
bool isTimeoutScheduled() const
std::unordered_map< FaceId, FaceInfo > FaceInfoTable
stores stategy information about each face in this namespace
static const Rtt RTT_TIMEOUT
bool isFirstProbeScheduled() const
size_t getNSilentTimeouts() const
static constexpr int getTypeId()
uint64_t FaceId
identifies a face
RttEstimator::Duration computeRto() const
RttEstimator::Duration computeRto() const
Duration computeRto() const
void setMeasurementExpirationEventId(const scheduler::EventId &id)
void setNSilentTimeouts(size_t nSilentTimeouts)
Strategy information for each face in a namespace.
Helper class to retrieve and create strategy measurements.
static const Rtt RTT_NO_MEASUREMENT
bool isProbingDue() const