NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
nfd::name_tree Namespace Reference

Classes

struct  AnyEntry
 an EntrySelector that accepts every Entry More...
 
struct  AnyEntrySubTree
 an EntrySubTreeSelector that accepts every Entry and its children More...
 
class  Entry
 an entry in the name tree More...
 
class  EnumerationImpl
 enumeration operation implementation More...
 
class  FullEnumerationImpl
 full enumeration implementation More...
 
class  GetTableEntry
 a functor to get a table entry from a name tree entry More...
 
class  Hash32
 
class  Hash64
 
class  Hashtable
 a hashtable for fast exact name lookup More...
 
class  HashtableOptions
 provides options for Hashtable More...
 
class  Iterator
 NameTree iterator. More...
 
class  NameTree
 a common index structure for FIB, PIT, StrategyChoice, and Measurements More...
 
class  Node
 a hashtable node More...
 
class  PartialEnumerationImpl
 partial enumeration implementation More...
 
class  PrefixMatchImpl
 partial enumeration implementation More...
 

Typedefs

typedef std::conditional<(sizeof(HashValue) > 4), Hash64, Hash32 >::type HashFunc
 a type with compute static method to compute hash value from a raw buffer More...
 
typedef size_t HashValue
 a single hash value More...
 
typedef std::vector< HashValueHashSequence
 a sequence of hash values More...
 
typedef function< bool(const Entry &entry)> EntrySelector
 a predicate to accept or reject an Entry in find operations More...
 
typedef function< std::pair< bool, bool >const Entry &entry)> EntrySubTreeSelector
 a predicate to accept or reject an Entry and its children More...
 
typedef boost::iterator_range< IteratorRange
 a Forward Range of name tree entries More...
 

Functions

HashValue computeHash (const Name &name, ssize_t prefixLen=-1)
 computes a single hash value More...
 
HashSequence computeHashes (const Name &name)
 computes hash values for each prefix of name More...
 
NodegetNode (const Entry &entry)
 
template<typename N , typename F >
void foreachNode (N *head, const F &func)
 invoke a function for each node in a doubly linked list More...
 
std::ostream & operator<< (std::ostream &os, const Iterator &i)
 
template EntryNameTree::findLongestPrefixMatch< fib::Entry > (const fib::Entry &, const EntrySelector &) const
 
template EntryNameTree::findLongestPrefixMatch< measurements::Entry > (const measurements::Entry &, const EntrySelector &) const
 
template EntryNameTree::findLongestPrefixMatch< strategy_choice::Entry > (const strategy_choice::Entry &, const EntrySelector &) const
 

Variables

 NameTreeHashtable
 
 NameTreeIterator
 
 NameTree
 

Typedef Documentation

◆ HashFunc

typedef std::conditional<(sizeof(HashValue) > 4), Hash64, Hash32>::type nfd::name_tree::HashFunc

a type with compute static method to compute hash value from a raw buffer

Definition at line 57 of file name-tree-hashtable.cpp.

◆ HashValue

typedef size_t nfd::name_tree::HashValue

a single hash value

Definition at line 34 of file name-tree-hashtable.hpp.

◆ HashSequence

a sequence of hash values

See also
computeHashes

Definition at line 43 of file name-tree-hashtable.hpp.

◆ EntrySelector

typedef function<bool(const Entry& entry)> nfd::name_tree::EntrySelector

a predicate to accept or reject an Entry in find operations

Definition at line 34 of file name-tree-iterator.hpp.

◆ EntrySubTreeSelector

typedef function<std::pair<bool,bool>const Entry& entry)> nfd::name_tree::EntrySubTreeSelector

a predicate to accept or reject an Entry and its children

Returns
.first indicates whether entry should be accepted; .second indicates whether entry's children should be visited

Definition at line 55 of file name-tree-iterator.hpp.

◆ Range

typedef boost::iterator_range<Iterator> nfd::name_tree::Range

a Forward Range of name tree entries

This type has .begin() and .end() methods which return Iterator. This type is usable with range-based for.

Definition at line 203 of file name-tree-iterator.hpp.

Function Documentation

◆ computeHash()

HashValue nfd::name_tree::computeHash ( const Name name,
ssize_t  prefixLen = -1 
)

computes a single hash value

Parameters
namebase name
prefixLenif non-negative, compute hash value for name.getPrefix(prefixLen); if negative, compute hash value for complete name

Definition at line 60 of file name-tree-hashtable.cpp.

References ndn::Block::size(), ndn::Name::size(), ndn::Block::wire(), and ndn::Name::wireEncode().

Referenced by nfd::name_tree::Hashtable::find(), and nfd::name_tree::Hashtable::insert().

◆ computeHashes()

HashSequence nfd::name_tree::computeHashes ( const Name name)

computes hash values for each prefix of name

Returns
a hash sequence, where the i-th hash value equals computeHash(name, i)

Definition at line 73 of file name-tree-hashtable.cpp.

References ndn::Name::size(), and ndn::Name::wireEncode().

Referenced by nfd::name_tree::NameTree::findLongestPrefixMatch(), and nfd::name_tree::NameTree::lookup().

◆ getNode()

Node * nfd::name_tree::getNode ( const Entry entry)
Returns
node associated with entry
Note
This function is for NameTree internal use.

Definition at line 105 of file name-tree-hashtable.cpp.

Referenced by nfd::name_tree::FullEnumerationImpl::advance(), and nfd::name_tree::NameTree::eraseIfEmpty().

◆ foreachNode()

template<typename N , typename F >
void nfd::name_tree::foreachNode ( N *  head,
const F &  func 
)

invoke a function for each node in a doubly linked list

Template Parameters
Neither Node or const Node
Fa functor with signature void F(N*)
Note
It's safe to delete the node in the function.

Definition at line 97 of file name-tree-hashtable.hpp.

References nfd::name_tree::Node::next.

Referenced by nfd::name_tree::Hashtable::erase(), and nfd::name_tree::Hashtable::~Hashtable().

◆ operator<<()

std::ostream & nfd::name_tree::operator<< ( std::ostream &  os,
const Iterator i 
)

◆ NameTree::findLongestPrefixMatch< fib::Entry >()

◆ NameTree::findLongestPrefixMatch< measurements::Entry >()

◆ NameTree::findLongestPrefixMatch< strategy_choice::Entry >()

Variable Documentation

◆ NameTreeHashtable

nfd::name_tree::NameTreeHashtable

Definition at line 33 of file name-tree-hashtable.cpp.

◆ NameTreeIterator

nfd::name_tree::NameTreeIterator

Definition at line 44 of file name-tree-iterator.cpp.

◆ NameTree

Definition at line 36 of file name-tree.cpp.