Priority FIFO replacement policy. More...
#include <cs-policy-priority-fifo.hpp>
Public Member Functions | |
PriorityFifoPolicy () | |
~PriorityFifoPolicy () final | |
Public Member Functions inherited from nfd::cs::Policy | |
Policy (const std::string &policyName) | |
virtual | ~Policy ()=default |
const std::string & | getName () const |
Cs * | getCs () const |
gets cs More... | |
void | setCs (Cs *cs) |
sets cs More... | |
size_t | getLimit () const |
gets hard limit (in number of entries) More... | |
void | setLimit (size_t nMaxEntries) |
sets hard limit (in number of entries) More... | |
void | afterInsert (EntryRef i) |
invoked by CS after a new entry is inserted More... | |
void | afterRefresh (EntryRef i) |
invoked by CS after an existing entry is refreshed by same Data More... | |
void | beforeErase (EntryRef i) |
invoked by CS before an entry is erased due to management command More... | |
void | beforeUse (EntryRef i) |
invoked by CS before an entry is used to match a lookup More... | |
Static Public Attributes | |
static const std::string | POLICY_NAME = "priority_fifo" |
Additional Inherited Members | |
Public Types inherited from nfd::cs::Policy | |
using | EntryRef = Table::const_iterator |
a reference to an CS entry More... | |
Static Public Member Functions inherited from nfd::cs::Policy | |
template<typename P > | |
static void | registerPolicy (const std::string &policyName=P::POLICY_NAME) |
static unique_ptr< Policy > | create (const std::string &policyName) |
static std::set< std::string > | getPolicyNames () |
Public Attributes inherited from nfd::cs::Policy | |
signal::Signal< Policy, EntryRef > | beforeEvict |
emits when an entry is being evicted More... | |
Priority FIFO replacement policy.
This policy maintains a set of cleanup queues to decide the eviction order of CS entries. The cleanup queues are three doubly linked lists that store EntryRefs. The three queues keep track of unsolicited, stale, and fresh Data packet, respectively. EntryRef is placed into, removed from, and moved between suitable queues whenever an Entry is added, removed, or has other attribute changes. Each Entry should be in exactly one queue at any moment. Within each queue, the EntryRefs are kept in first-in-first-out order. Eviction procedure exhausts the first queue before moving onto the next queue, in the order of unsolicited, stale, and fresh queue.
Definition at line 65 of file cs-policy-priority-fifo.hpp.
nfd::cs::priority_fifo::PriorityFifoPolicy::PriorityFifoPolicy | ( | ) |
Definition at line 37 of file cs-policy-priority-fifo.cpp.
|
final |
Definition at line 42 of file cs-policy-priority-fifo.cpp.
References nfd::cs::Policy::beforeEvict, emitSignal, nfd::cs::Policy::getCs(), nfd::cs::Policy::getLimit(), nfd::getScheduler(), nfd::cs::priority_fifo::QUEUE_FIFO, nfd::cs::priority_fifo::QUEUE_STALE, nfd::cs::priority_fifo::QUEUE_UNSOLICITED, and nonstd::span_lite::size().
|
static |
Definition at line 73 of file cs-policy-priority-fifo.hpp.