NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
nfd::cs::Policy Class Referenceabstract

represents a CS replacement policy More...

#include <cs-policy.hpp>

Inheritance diagram for nfd::cs::Policy:
Collaboration diagram for nfd::cs::Policy:

Public Types

using EntryRef = Table::const_iterator
 a reference to an CS entry More...
 

Public Member Functions

 Policy (const std::string &policyName)
 
virtual ~Policy ()=default
 
const std::string & getName () const
 
CsgetCs () 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 Member Functions

template<typename P >
static void registerPolicy (const std::string &policyName=P::POLICY_NAME)
 
static unique_ptr< Policycreate (const std::string &policyName)
 
static std::set< std::string > getPolicyNames ()
 

Public Attributes

signal::Signal< Policy, EntryRefbeforeEvict
 emits when an entry is being evicted More...
 

Protected Member Functions

virtual void doAfterInsert (EntryRef i)=0
 invoked after a new entry is created in CS More...
 
virtual void doAfterRefresh (EntryRef i)=0
 invoked after an existing entry is refreshed by same Data More...
 
virtual void doBeforeErase (EntryRef i)=0
 invoked before an entry is erased due to management command More...
 
virtual void doBeforeUse (EntryRef i)=0
 invoked before an entry is used to match a lookup More...
 
virtual void evictEntries ()=0
 evicts zero or more entries More...
 

Detailed Description

represents a CS replacement policy

Definition at line 38 of file cs-policy.hpp.

Member Typedef Documentation

◆ EntryRef

using nfd::cs::Policy::EntryRef = Table::const_iterator

a reference to an CS entry

Note
operator< of EntryRef compares the Data name enclosed in the Entry.

Definition at line 111 of file cs-policy.hpp.

Constructor & Destructor Documentation

◆ Policy()

nfd::cs::Policy::Policy ( const std::string &  policyName)
explicit

Definition at line 62 of file cs-policy.cpp.

Referenced by registerPolicy().

◆ ~Policy()

virtual nfd::cs::Policy::~Policy ( )
virtualdefault

Referenced by registerPolicy().

Member Function Documentation

◆ registerPolicy()

template<typename P >
static void nfd::cs::Policy::registerPolicy ( const std::string &  policyName = P::POLICY_NAME)
inlinestatic

Definition at line 43 of file cs-policy.hpp.

References create(), getPolicyNames(), Policy(), and ~Policy().

◆ create()

unique_ptr< Policy > nfd::cs::Policy::create ( const std::string &  policyName)
static
Returns
a cs::Policy identified by policyName, or nullptr if policyName is unknown

Definition at line 46 of file cs-policy.cpp.

Referenced by nfd::TablesConfigSection::ensureConfigured(), nfd::cs::makeDefaultPolicy(), and registerPolicy().

◆ getPolicyNames()

std::set< std::string > nfd::cs::Policy::getPolicyNames ( )
static
Returns
a list of available policy names

Definition at line 54 of file cs-policy.cpp.

Referenced by registerPolicy().

◆ getName()

const std::string& nfd::cs::Policy::getName ( ) const
inline

Definition at line 69 of file cs-policy.hpp.

◆ getCs()

Cs* nfd::cs::Policy::getCs ( ) const
inline

◆ setCs()

void nfd::cs::Policy::setCs ( Cs cs)
inline

sets cs

Definition at line 85 of file cs-policy.hpp.

◆ getLimit()

size_t nfd::cs::Policy::getLimit ( ) const
inline

gets hard limit (in number of entries)

Definition at line 93 of file cs-policy.hpp.

References setLimit().

Referenced by nfd::cs::lru::LruPolicy::LruPolicy(), and nfd::cs::priority_fifo::PriorityFifoPolicy::~PriorityFifoPolicy().

◆ setLimit()

void nfd::cs::Policy::setLimit ( size_t  nMaxEntries)

sets hard limit (in number of entries)

Postcondition
getLimit() == nMaxEntries
cs.size() <= getLimit()

The policy may evict entries if necessary.

Definition at line 68 of file cs-policy.cpp.

References evictEntries(), and NFD_LOG_INFO.

Referenced by getLimit().

◆ afterInsert()

void nfd::cs::Policy::afterInsert ( EntryRef  i)

invoked by CS after a new entry is inserted

Postcondition
cs.size() <= getLimit()

The policy may evict entries if necessary. During this process, i might be evicted.

Definition at line 76 of file cs-policy.cpp.

References doAfterInsert().

◆ afterRefresh()

void nfd::cs::Policy::afterRefresh ( EntryRef  i)

invoked by CS after an existing entry is refreshed by same Data

The policy may witness this refresh to make better eviction decisions in the future.

Definition at line 83 of file cs-policy.cpp.

References doAfterRefresh().

◆ beforeErase()

void nfd::cs::Policy::beforeErase ( EntryRef  i)

invoked by CS before an entry is erased due to management command

Warning
CS must not invoke this method if an entry is erased due to eviction.

Definition at line 90 of file cs-policy.cpp.

References doBeforeErase().

◆ beforeUse()

void nfd::cs::Policy::beforeUse ( EntryRef  i)

invoked by CS before an entry is used to match a lookup

The policy may witness this usage to make better eviction decisions in the future.

Definition at line 97 of file cs-policy.cpp.

References doBeforeUse().

◆ doAfterInsert()

virtual void nfd::cs::Policy::doAfterInsert ( EntryRef  i)
protectedpure virtual

invoked after a new entry is created in CS

When overridden in a subclass, a policy implementation should decide whether to accept i. If i is accepted, it should be inserted into a cleanup index. Otherwise, beforeEvict signal should be emitted with i to inform CS to erase the entry. A policy implementation may decide to evict other entries by emitting beforeEvict signal, in order to keep CS size under limit.

Referenced by afterInsert().

◆ doAfterRefresh()

virtual void nfd::cs::Policy::doAfterRefresh ( EntryRef  i)
protectedpure virtual

invoked after an existing entry is refreshed by same Data

When overridden in a subclass, a policy implementation may witness this operation and adjust its cleanup index.

Referenced by afterRefresh().

◆ doBeforeErase()

virtual void nfd::cs::Policy::doBeforeErase ( EntryRef  i)
protectedpure virtual

invoked before an entry is erased due to management command

Note
This will not be invoked for an entry being evicted by policy.

When overridden in a subclass, a policy implementation should erase i from its cleanup index without emitted afterErase signal.

Referenced by beforeErase().

◆ doBeforeUse()

virtual void nfd::cs::Policy::doBeforeUse ( EntryRef  i)
protectedpure virtual

invoked before an entry is used to match a lookup

When overridden in a subclass, a policy implementation may witness this operation and adjust its cleanup index.

Referenced by beforeUse().

◆ evictEntries()

virtual void nfd::cs::Policy::evictEntries ( )
protectedpure virtual

evicts zero or more entries

Postcondition
CS size does not exceed hard limit

Referenced by setLimit().

Member Data Documentation

◆ beforeEvict

signal::Signal<Policy, EntryRef> nfd::cs::Policy::beforeEvict

emits when an entry is being evicted

A policy implementation should emit this signal to cause CS to erase an entry from its index. CS should connect to this signal and erase the entry upon signal emission.

Definition at line 118 of file cs-policy.hpp.

Referenced by nfd::cs::lru::LruPolicy::LruPolicy(), and nfd::cs::priority_fifo::PriorityFifoPolicy::~PriorityFifoPolicy().


The documentation for this class was generated from the following files: