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

Represents the Strategy Choice table. More...

#include <strategy-choice.hpp>

Inheritance diagram for nfd::strategy_choice::StrategyChoice:
Collaboration diagram for nfd::strategy_choice::StrategyChoice:


class  InsertResult

Public Types

typedef boost::transformed_range< name_tree::GetTableEntry< Entry >, const name_tree::RangeRange
typedef boost::range_iterator< Range >::type const_iterator

Public Member Functions

 StrategyChoice (Forwarder &forwarder)
size_t size () const
void setDefaultStrategy (const Name &strategyName)
 Set the default strategy. More...
InsertResult insert (const Name &prefix, const Name &strategyName)
 Set strategy of prefix to be strategyName. More...
void erase (const Name &prefix)
 Make prefix to inherit strategy from its parent. More...
std::pair< bool, Nameget (const Name &prefix) const
 Get strategy Name of prefix. More...
fw::StrategyfindEffectiveStrategy (const Name &prefix) const
 Get effective strategy for prefix. More...
fw::StrategyfindEffectiveStrategy (const pit::Entry &pitEntry) const
 Get effective strategy for pitEntry. More...
fw::StrategyfindEffectiveStrategy (const measurements::Entry &measurementsEntry) const
 Get effective strategy for measurementsEntry. More...
const_iterator begin () const
const_iterator end () const
template<typename K >
StrategyfindEffectiveStrategyImpl (const K &key) const

Detailed Description

Represents the Strategy Choice table.

The Strategy Choice table maintains available Strategy types, and associates Name prefixes with Strategy types.

Each strategy is identified by a strategyName. It's recommended to include a version number as the last component of strategyName.

A Name prefix is owned by a strategy if a longest prefix match on the Strategy Choice table returns that strategy.

Definition at line 51 of file strategy-choice.hpp.

Member Typedef Documentation

◆ Range

Definition at line 155 of file strategy-choice.hpp.

◆ const_iterator

typedef boost::range_iterator<Range>::type nfd::strategy_choice::StrategyChoice::const_iterator

Definition at line 156 of file strategy-choice.hpp.

Constructor & Destructor Documentation

◆ StrategyChoice()

nfd::strategy_choice::StrategyChoice::StrategyChoice ( Forwarder forwarder)

Definition at line 50 of file strategy-choice.cpp.

Member Function Documentation

◆ size()

size_t nfd::strategy_choice::StrategyChoice::size ( ) const

Definition at line 58 of file strategy-choice.hpp.

References setDefaultStrategy().

◆ setDefaultStrategy()

void nfd::strategy_choice::StrategyChoice::setDefaultStrategy ( const Name strategyName)

Set the default strategy.

This must be called by forwarder constructor.

Definition at line 57 of file strategy-choice.cpp.

References nfd::fw::Strategy::create(), nfd::name_tree::NameTree::lookup(), nonstd::optional_lite::std11::move(), ns3::ndn::Name, NFD_LOG_INFO, and nfd::name_tree::Entry::setStrategyChoiceEntry().

Referenced by nfd::Forwarder::Forwarder(), and size().

◆ insert()

StrategyChoice::InsertResult nfd::strategy_choice::StrategyChoice::insert ( const Name prefix,
const Name strategyName 

Set strategy of prefix to be strategyName.

prefixthe name prefix to change strategy
strategyNamestrategy instance name, may contain version and parameters; strategy must have been registered
convertible to true on success; convertible to false on failure

Definition at line 71 of file strategy-choice.cpp.

References nfd::fw::Strategy::create(), findEffectiveStrategy(), nfd::fw::Strategy::getInstanceName(), nfd::name_tree::NameTree::getMaxDepth(), nfd::strategy_choice::Entry::getStrategy(), nfd::name_tree::Entry::getStrategyChoiceEntry(), nfd::strategy_choice::Entry::getStrategyInstanceName(), nfd::name_tree::NameTree::lookup(), nonstd::optional_lite::std11::move(), NFD_LOG_ERROR, NFD_LOG_TRACE, nfd::strategy_choice::Entry::setStrategy(), nfd::name_tree::Entry::setStrategyChoiceEntry(), and ndn::Name::size().

Referenced by nfd::TablesConfigSection::ensureConfigured().

◆ erase()

void nfd::strategy_choice::StrategyChoice::erase ( const Name prefix)

Make prefix to inherit strategy from its parent.

Not allowed for root prefix (ndn:/)

Definition at line 141 of file strategy-choice.cpp.

References nfd::name_tree::NameTree::eraseIfEmpty(), findEffectiveStrategy(), nfd::name_tree::NameTree::findExactMatch(), ndn::Name::getPrefix(), nfd::strategy_choice::Entry::getStrategy(), and ndn::Name::size().

◆ get()

std::pair< bool, Name > nfd::strategy_choice::StrategyChoice::get ( const Name prefix) const

Get strategy Name of prefix.

true and strategyName at exact match, or false

Definition at line 166 of file strategy-choice.cpp.

References nfd::name_tree::NameTree::findExactMatch(), nfd::name_tree::Entry::getStrategyChoiceEntry(), and nfd::strategy_choice::Entry::getStrategyInstanceName().

◆ findEffectiveStrategy() [1/3]

◆ findEffectiveStrategy() [2/3]

Strategy & nfd::strategy_choice::StrategyChoice::findEffectiveStrategy ( const pit::Entry pitEntry) const

Get effective strategy for pitEntry.

This is equivalent to findEffectiveStrategy(pitEntry.getName())

Definition at line 197 of file strategy-choice.cpp.

◆ findEffectiveStrategy() [3/3]

Strategy & nfd::strategy_choice::StrategyChoice::findEffectiveStrategy ( const measurements::Entry measurementsEntry) const

Get effective strategy for measurementsEntry.

This is equivalent to findEffectiveStrategy(measurementsEntry.getName())

Definition at line 203 of file strategy-choice.cpp.

◆ begin()

const_iterator nfd::strategy_choice::StrategyChoice::begin ( ) const
an iterator to the beginning
Iteration order is implementation-defined.
Undefined behavior may occur if a FIB/PIT/Measurements/StrategyChoice entry is inserted or erased during enumeration.

Definition at line 164 of file strategy-choice.hpp.

◆ end()

const_iterator nfd::strategy_choice::StrategyChoice::end ( ) const
an iterator to the end
See also

Definition at line 173 of file strategy-choice.hpp.

References nfd::strategy_choice::StrategyChoice::InsertResult::operator<<, and nfd::strategy_choice::StrategyChoice.

◆ findEffectiveStrategyImpl()

template<typename K >
Strategy& nfd::strategy_choice::StrategyChoice::findEffectiveStrategyImpl ( const K &  key) const

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