represents the Strategy Choice table More...
#include <strategy-choice.hpp>
Public Types | |
typedef boost::transformed_range< name_tree::GetTableEntry< Entry >, const name_tree::Range > | Range |
typedef boost::range_iterator< Range >::type | const_iterator |
Public Member Functions | |
StrategyChoice (NameTree &nameTree, unique_ptr< fw::Strategy > defaultStrategy) | |
size_t | size () const |
bool | hasStrategy (const Name &strategyName, bool isExact=false) const |
determines if a strategy is installed More... | |
std::pair< bool, fw::Strategy * > | install (unique_ptr< fw::Strategy > strategy) |
install a strategy More... | |
bool | 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, Name > | get (const Name &prefix) const |
get strategy Name of prefix More... | |
fw::Strategy & | findEffectiveStrategy (const Name &prefix) const |
get effective strategy for prefix More... | |
fw::Strategy & | findEffectiveStrategy (const pit::Entry &pitEntry) const |
get effective strategy for pitEntry More... | |
fw::Strategy & | findEffectiveStrategy (const measurements::Entry &measurementsEntry) const |
get effective strategy for measurementsEntry More... | |
const_iterator | begin () const |
const_iterator | end () const |
template<typename K > | |
Strategy & | findEffectiveStrategyImpl (const K &key) const |
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 48 of file strategy-choice.hpp.
typedef boost::transformed_range<name_tree::GetTableEntry<Entry>, const name_tree::Range> nfd::strategy_choice::StrategyChoice::Range |
Definition at line 124 of file strategy-choice.hpp.
typedef boost::range_iterator<Range>::type nfd::strategy_choice::StrategyChoice::const_iterator |
Definition at line 125 of file strategy-choice.hpp.
nfd::strategy_choice::StrategyChoice::StrategyChoice | ( | NameTree & | nameTree, |
unique_ptr< fw::Strategy > | defaultStrategy | ||
) |
Definition at line 45 of file strategy-choice.cpp.
|
inline |
Definition at line 54 of file strategy-choice.hpp.
References erase(), findEffectiveStrategy(), hasStrategy(), insert(), and install().
bool nfd::strategy_choice::StrategyChoice::hasStrategy | ( | const Name & | strategyName, |
bool | isExact = false |
||
) | const |
determines if a strategy is installed
strategyName | name of the strategy |
isExact | true to require exact match, false to permit unversioned strategyName |
Definition at line 53 of file strategy-choice.cpp.
Referenced by nfd::TablesConfigSection::ensureConfigured(), ns3::ndn::StrategyChoiceHelper::Install(), nfd::fw::installStrategies(), size(), and nfd::StrategyChoiceManager::StrategyChoiceManager().
std::pair< bool, Strategy * > nfd::strategy_choice::StrategyChoice::install | ( | unique_ptr< fw::Strategy > | strategy | ) |
install a strategy
Definition at line 64 of file strategy-choice.cpp.
References ndn::Name::isPrefixOf(), NFD_LOG_ERROR, and ndn::Name::size().
Referenced by findEffectiveStrategy(), ns3::ndn::StrategyChoiceHelper::Install(), nfd::fw::installStrategies(), and size().
bool nfd::strategy_choice::StrategyChoice::insert | ( | const Name & | prefix, |
const Name & | strategyName | ||
) |
set strategy of prefix to be strategyName
prefix | the name prefix for which strategyName should be used |
strategyName | the strategy to be used |
This method set a strategy onto a Name prefix. The strategy must have been installed. The strategyName can either be exact (contains version component), or omit the version component to pick the latest version.
Definition at line 98 of file strategy-choice.cpp.
References findEffectiveStrategy(), nfd::fw::Strategy::getName(), nfd::strategy_choice::Entry::getStrategy(), nfd::name_tree::Entry::getStrategyChoiceEntry(), nfd::name_tree::NameTree::lookup(), NFD_LOG_ERROR, NFD_LOG_TRACE, nfd::strategy_choice::Entry::setStrategy(), and nfd::name_tree::Entry::setStrategyChoiceEntry().
Referenced by nfd::TablesConfigSection::ensureConfigured(), size(), and nfd::StrategyChoiceManager::StrategyChoiceManager().
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 134 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().
Referenced by size(), and nfd::StrategyChoiceManager::StrategyChoiceManager().
get strategy Name of prefix
Definition at line 159 of file strategy-choice.cpp.
References nfd::name_tree::NameTree::findExactMatch(), nfd::fw::Strategy::getName(), nfd::strategy_choice::Entry::getStrategy(), nfd::name_tree::Entry::getStrategyChoiceEntry(), and ns3::ndn::Name.
Referenced by nfd::StrategyChoiceManager::StrategyChoiceManager().
get effective strategy for prefix
Definition at line 184 of file strategy-choice.cpp.
Referenced by erase(), insert(), size(), and nfd::measurements::MeasurementsAccessor::~MeasurementsAccessor().
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 190 of file strategy-choice.cpp.
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 196 of file strategy-choice.cpp.
References nfd::fw::Strategy::getName(), install(), nfd::name_tree::NameTree::lookup(), ns3::ndn::Name, NFD_LOG_INFO, and nfd::name_tree::Entry::setStrategyChoiceEntry().
|
inline |
Definition at line 133 of file strategy-choice.hpp.
|
inline |
Definition at line 142 of file strategy-choice.hpp.
References nfd::strategy_choice::StrategyChoice.
Strategy& nfd::strategy_choice::StrategyChoice::findEffectiveStrategyImpl | ( | const K & | key | ) | const |