Loading...
Searching...
No Matches
asf-probing-module.hpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2014-2024, Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
10 *
11 * This file is part of NFD (Named Data Networking Forwarding Daemon).
12 * See AUTHORS.md for complete list of NFD authors and contributors.
13 *
14 * NFD is free software: you can redistribute it and/or modify it under the terms
15 * of the GNU General Public License as published by the Free Software Foundation,
16 * either version 3 of the License, or (at your option) any later version.
17 *
18 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20 * PURPOSE. See the GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along with
23 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24 */
25
26#ifndef NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
27#define NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
28
29#include "asf-measurements.hpp"
30
31namespace nfd::fw::asf {
32
37{
38 Face* face = nullptr;
39 time::nanoseconds rtt = 0_ns;
40 time::nanoseconds srtt = 0_ns;
41 uint64_t cost = 0;
42};
43
48{
49public:
50 explicit
51 ProbingModule(AsfMeasurements& measurements);
52
53 void
54 scheduleProbe(const fib::Entry& fibEntry, time::milliseconds interval);
55
56 Face*
57 getFaceToProbe(const Face& inFace, const Interest& interest,
58 const fib::Entry& fibEntry, const Face& faceUsed);
59
60 bool
61 isProbingNeeded(const fib::Entry& fibEntry, const Name& interestName);
62
63 void
64 afterForwardingProbe(const fib::Entry& fibEntry, const Name& interestName);
65
66 void
67 setProbingInterval(time::milliseconds probingInterval);
68
69 time::milliseconds
71 {
72 return m_probingInterval;
73 }
74
75public:
76 static constexpr time::milliseconds DEFAULT_PROBING_INTERVAL = 1_min;
77 static constexpr time::milliseconds MIN_PROBING_INTERVAL = 1_s;
78
80 {
81 bool
82 operator()(const FaceStats& lhs, const FaceStats& rhs) const noexcept;
83 };
84 using FaceStatsProbingSet = std::set<FaceStats, FaceStatsProbingCompare>;
85
86private:
87 time::milliseconds m_probingInterval;
88 AsfMeasurements& m_measurements;
89};
90
91} // namespace nfd::fw::asf
92
93#endif // NFD_DAEMON_FW_ASF_PROBING_MODULE_HPP
Generalization of a network interface.
Definition face.hpp:118
Represents an entry in the FIB.
Definition fib-entry.hpp:91
Helper class to retrieve and create strategy measurements.
Face * getFaceToProbe(const Face &inFace, const Interest &interest, const fib::Entry &fibEntry, const Face &faceUsed)
bool isProbingNeeded(const fib::Entry &fibEntry, const Name &interestName)
time::milliseconds getProbingInterval() const
static constexpr time::milliseconds MIN_PROBING_INTERVAL
std::set< FaceStats, FaceStatsProbingCompare > FaceStatsProbingSet
void afterForwardingProbe(const fib::Entry &fibEntry, const Name &interestName)
void setProbingInterval(time::milliseconds probingInterval)
void scheduleProbe(const fib::Entry &fibEntry, time::milliseconds interval)
static constexpr time::milliseconds DEFAULT_PROBING_INTERVAL
Container for ranking-related values.
bool operator()(const FaceStats &lhs, const FaceStats &rhs) const noexcept