nfd::strategy_choice::StrategyChoice Class Reference

Represents the Strategy Choice table. More...

#include <daemon/table/strategy-choice.hpp>

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

Classes

class  InsertResult
 

Public Types

using const_iterator = boost::range_iterator< Range >::type
 
using Range = boost::transformed_range< name_tree::GetTableEntry< Entry >, const name_tree::Range >
 

Public Member Functions

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

◆ const_iterator

using nfd::strategy_choice::StrategyChoice::const_iterator = boost::range_iterator<Range>::type

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

◆ Range

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

Constructor & Destructor Documentation

◆ StrategyChoice()

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

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

Member Function Documentation

◆ begin()

const_iterator nfd::strategy_choice::StrategyChoice::begin ( ) const
inline
Returns
an iterator to the beginning
Note
Iteration order is implementation-defined.
Warning
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
inline
Returns
an iterator to the end
See also
begin()

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

◆ erase()

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

Make prefix to inherit strategy from its parent.

Note
Not allowed for root prefix (ndn:/)

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

◆ findEffectiveStrategy() [1/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 202 of file strategy-choice.cpp.

◆ findEffectiveStrategy() [2/3]

Strategy & nfd::strategy_choice::StrategyChoice::findEffectiveStrategy ( const Name &  prefix) const

Get effective strategy for prefix.

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

◆ findEffectiveStrategy() [3/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 196 of file strategy-choice.cpp.

◆ findEffectiveStrategyImpl()

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

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

◆ get()

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

Get strategy Name of prefix.

Returns
true and strategyName at exact match, or false

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

◆ insert()

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

Set strategy of prefix to be strategyName.

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

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

◆ setDefaultStrategy()

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

Set the default strategy.

This must be called by forwarder constructor.

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

◆ size()

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

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