Container for Prophet nodes (routes and predictability values). More...
#include <Table.h>
Public Types | |
| typedef std::map< std::string, Node *, less_string > | rib_table |
| typedef std::map< std::string, Node *, less_string > ::const_iterator | const_iterator |
| typedef std::vector< Node * > | Sequence |
| typedef Sequence::const_iterator | heap_iterator |
Public Member Functions | |
| Table (BundleCore *core, const std::string &name, bool persistent=false) | |
| Default constructor. | |
| Table (const Table &t) | |
| Copy constructor. | |
| ~Table () | |
| Destructor. | |
| const Node * | find (const std::string &dest_id) const |
| Find and return route for given destination ID; else return NULL. | |
| void | update (Node *n) |
| Table takes ownership of memory pointed to by Node*, updating its member list (replacing element if n->dest_id() already exists). | |
| void | update_route (const std::string &dest_id, bool relay=Node::DEFAULT_RELAY, bool custody=Node::DEFAULT_CUSTODY, bool internet=Node::DEFAULT_INTERNET) |
| Convenience function for updating directly-encountered route in table. | |
| void | update_transitive (const std::string &dest_id, const std::string &peer_id, double peer_pvalue, bool relay=Node::DEFAULT_RELAY, bool custody=Node::DEFAULT_CUSTODY, bool internet=Node::DEFAULT_INTERNET) |
| Convenience function for updating transitively-discovered route in table. | |
| void | update_transitive (const std::string &peer_id, const RIBNodeList &nodes, const Dictionary &ribd) |
| Convenience wrapper around update_transitive to import entire RIB. | |
| double | p_value (const std::string &dest_id) const |
| Convenience function for looking up predictability of a given route. | |
| double | p_value (const Bundle *b) const |
| Convenience function for lookup of predictability of route to b's dest. | |
| size_t | clone (NodeList &list) const |
| Create duplicate list of Nodes, return number of elements. | |
| size_t | size () const |
| Returns number of routes held by Table. | |
| void | set_max_route (u_int max_route) |
| Set upper limit on number of routes retained by Table. | |
| size_t | truncate (double epsilon) |
| The predictability of Nodes should diminish with time; to allow for maintenance of routes, the Prophet spec allows for removing routes whose predictability falls below some arbitrary epsilon. | |
| void | assign (const RIBNodeList &list, const Dictionary &ribd) |
| Update Table from peer's RIB. | |
| void | assign (const std::list< const Node * > &list, const NodeParams *params) |
| Persistent storage interface: clear contents of Table and assign from deserialization routine. | |
| size_t | age_nodes () |
| For maintenance routines, visit each Node in table and invoke its aging algorithm; return the number of Nodes visited. | |
| const_iterator | begin () const |
| Iterators. | |
| const_iterator | end () const |
| Iterators. | |
| heap_iterator | heap_begin () const |
| Iterators. | |
| heap_iterator | heap_end () const |
| Iterators. | |
Protected Types | |
| typedef rib_table::iterator | iterator |
| typedef Heap< Node *, std::vector< Node * > , struct heap_compare, struct heap_pos > | NodeHeap |
Protected Member Functions | |
| void | heap_add (Node *n) |
| Add route to heap. | |
| void | heap_del (Node *n) |
| Remove node from heap. | |
| void | enforce_quota () |
| Enforce upper bound by eliminating minimum routes. | |
| void | remove (iterator *i) |
| Clean up memory and remove pointer from internal map for this element. | |
| void | free () |
| Clean up memory pointed to by each Node*. | |
| bool | find (const std::string &dest_id, iterator *i) |
| Utility function for finding route by dest_id. | |
Protected Attributes | |
| BundleCore *const | core_ |
| facade interface into Bundle host | |
| rib_table | table_ |
| Mapped collection of <dest_id,Node*> pairs. | |
| NodeHeap | heap_ |
| Min-heap for quota-enforcement eviction ordering. | |
| bool | persistent_ |
| whether to utilize BundleCore's persistent storage interface for Nodes | |
| std::string | name_ |
| object name | |
| u_int | max_route_ |
| upper limit to number of routes to retain | |
Container for Prophet nodes (routes and predictability values).
Assumes ownership of memory pointed to by member Node*'s
Definition at line 57 of file Table.h.
| typedef std::map<std::string,Node*,less_string>::const_iterator prophet::Table::const_iterator |
| typedef Sequence::const_iterator prophet::Table::heap_iterator |
typedef rib_table::iterator prophet::Table::iterator [protected] |
typedef Heap<Node*, std::vector<Node*>, struct heap_compare, struct heap_pos> prophet::Table::NodeHeap [protected] |
| typedef std::map<std::string,Node*,less_string> prophet::Table::rib_table |
| typedef std::vector<Node*> prophet::Table::Sequence |
| prophet::Table::Table | ( | BundleCore * | core, | |
| const std::string & | name, | |||
| bool | persistent = false | |||
| ) |
| prophet::Table::Table | ( | const Table & | t | ) |
| prophet::Table::~Table | ( | ) |
| size_t prophet::Table::age_nodes | ( | ) |
For maintenance routines, visit each Node in table and invoke its aging algorithm; return the number of Nodes visited.
Definition at line 424 of file Table.cc.
References core_, heap_add(), heap_del(), prophet::BundleCore::LOG_INFO, name_, persistent_, prophet::BundleCore::print_log(), table_, prophet::Node::update_age(), and prophet::BundleCore::update_node().
Referenced by prophet::Controller::handle_timeout(), and dtn::ProphetBundleCore::load_prophet_nodes().
| void prophet::Table::assign | ( | const std::list< const Node * > & | list, | |
| const NodeParams * | params | |||
| ) |
Persistent storage interface: clear contents of Table and assign from deserialization routine.
Definition at line 401 of file Table.cc.
References core_, prophet::BundleCore::LOG_INFO, name_, persistent_, prophet::BundleCore::print_log(), prophet::Node::set_params(), and update().
| void prophet::Table::assign | ( | const RIBNodeList & | list, | |
| const Dictionary & | ribd | |||
| ) |
Update Table from peer's RIB.
Definition at line 383 of file Table.cc.
References core_, prophet::Dictionary::find(), prophet::BundleCore::LOG_INFO, name_, prophet::BundleCore::print_log(), prophet::Node::set_dest_id(), and update().
Referenced by dtn::ProphetNodeList::clone(), and prophet::Encounter::handle_rib_tlv().
| const_iterator prophet::Table::begin | ( | ) | const [inline] |
Iterators.
Definition at line 185 of file Table.h.
References table_.
Referenced by prophet::TLVCreator::rib(), and prophet::TLVCreator::ribd().
| size_t prophet::Table::clone | ( | NodeList & | list | ) | const |
Create duplicate list of Nodes, return number of elements.
Definition at line 302 of file Table.cc.
References prophet::PointerList< T >::clear(), and table_.
| const_iterator prophet::Table::end | ( | ) | const [inline] |
Iterators.
Definition at line 186 of file Table.h.
References table_.
Referenced by prophet::TLVCreator::rib(), and prophet::TLVCreator::ribd().
| void prophet::Table::enforce_quota | ( | ) | [protected] |
Enforce upper bound by eliminating minimum routes.
Definition at line 460 of file Table.cc.
References core_, prophet::Node::dest_id(), prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::empty(), find(), heap_, heap_del(), prophet::BundleCore::LOG_INFO, max_route_, name_, prophet::BundleCore::print_log(), table_, and prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::top().
Referenced by set_max_route(), update(), update_route(), and update_transitive().
Utility function for finding route by dest_id.
Definition at line 496 of file Table.cc.
References LOG_LT_MIN_LENGTH, MIN_LENGTH, and table_.
| const Node * prophet::Table::find | ( | const std::string & | dest_id | ) | const |
Find and return route for given destination ID; else return NULL.
Definition at line 76 of file Table.cc.
References LOG_LT_MIN_LENGTH, MIN_LENGTH, and table_.
Referenced by enforce_quota(), p_value(), truncate(), update(), update_route(), and update_transitive().
| void prophet::Table::free | ( | ) | [protected] |
Clean up memory pointed to by each Node*.
Definition at line 486 of file Table.cc.
References heap_del(), and table_.
Referenced by truncate(), and ~Table().
| void prophet::Table::heap_add | ( | Node * | n | ) | [protected] |
Add route to heap.
Definition at line 58 of file Table.cc.
References prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::add(), and heap_.
Referenced by age_nodes(), Table(), update(), update_route(), and update_transitive().
| heap_iterator prophet::Table::heap_begin | ( | ) | const [inline] |
Iterators.
Definition at line 187 of file Table.h.
References heap_, and prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::sequence().
| void prophet::Table::heap_del | ( | Node * | n | ) | [protected] |
Remove node from heap.
Definition at line 63 of file Table.cc.
References prophet::Node::dest_id_, heap_, prophet::Node::heap_pos_, prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::remove(), prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::sequence(), and prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::size().
Referenced by age_nodes(), enforce_quota(), free(), remove(), update(), update_route(), and update_transitive().
| heap_iterator prophet::Table::heap_end | ( | ) | const [inline] |
Iterators.
Definition at line 188 of file Table.h.
References heap_, and prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::sequence().
| double prophet::Table::p_value | ( | const Bundle * | b | ) | const |
Convenience function for lookup of predictability of route to b's dest.
Definition at line 100 of file Table.cc.
References core_, prophet::Bundle::destination_id(), find(), prophet::BundleCore::get_route(), and prophet::Node::p_value().
| double prophet::Table::p_value | ( | const std::string & | dest_id | ) | const |
Convenience function for looking up predictability of a given route.
Definition at line 90 of file Table.cc.
References find(), and prophet::Node::p_value().
Referenced by prophet::Controller::handle_bundle_transmitted(), prophet::QueueCompLEPR::operator()(), prophet::FwdStrategyCompGRTRMAX::operator()(), prophet::FwdStrategyCompGRTRSORT::operator()(), prophet::FwdDeciderGTMXPLUS::operator()(), prophet::FwdDeciderGRTRPLUS::operator()(), prophet::FwdDeciderGRTR::operator()(), and update_transitive().
| void prophet::Table::remove | ( | iterator * | i | ) | [protected] |
Clean up memory and remove pointer from internal map for this element.
Definition at line 448 of file Table.cc.
References core_, prophet::BundleCore::delete_node(), heap_del(), persistent_, and table_.
| void prophet::Table::set_max_route | ( | u_int | max_route | ) | [inline] |
Set upper limit on number of routes retained by Table.
Definition at line 148 of file Table.h.
References enforce_quota(), and max_route_.
Referenced by prophet::Controller::Controller(), and prophet::Controller::set_max_route().
| size_t prophet::Table::size | ( | ) | const [inline] |
| size_t prophet::Table::truncate | ( | double | epsilon | ) |
The predictability of Nodes should diminish with time; to allow for maintenance of routes, the Prophet spec allows for removing routes whose predictability falls below some arbitrary epsilon.
Given epsilon as a minimum predictability, remove all routes whose predictability is below epsilon. Return the number of routes removed.
Definition at line 320 of file Table.cc.
References core_, prophet::Node::dest_id(), prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::empty(), find(), free(), heap_, prophet::BundleCore::LOG_INFO, name_, prophet::Node::p_value(), prophet::BundleCore::print_log(), prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::remove(), prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::size(), table_, and prophet::Heap< UnitType, Sequence, Compare, UpdateElem >::top().
Referenced by prophet::Controller::handle_timeout(), and dtn::ProphetBundleCore::load_prophet_nodes().
| void prophet::Table::update | ( | Node * | n | ) |
Table takes ownership of memory pointed to by Node*, updating its member list (replacing element if n->dest_id() already exists).
Definition at line 112 of file Table.cc.
References core_, prophet::Node::dest_id(), enforce_quota(), find(), heap_add(), heap_del(), prophet::BundleCore::LOG_INFO, LOG_LT_MIN_LENGTH, MIN_LENGTH, name_, prophet::Node::p_value(), persistent_, prophet::BundleCore::print_log(), table_, and prophet::BundleCore::update_node().
Referenced by assign().
| void prophet::Table::update_route | ( | const std::string & | dest_id, | |
| bool | relay = Node::DEFAULT_RELAY, |
|||
| bool | custody = Node::DEFAULT_CUSTODY, |
|||
| bool | internet = Node::DEFAULT_INTERNET | |||
| ) |
Convenience function for updating directly-encountered route in table.
Adds new node to table, or updates if route already exists. On success, post-condition is that update_pvalue is called on the node, then the node is updated in Table.
Definition at line 158 of file Table.cc.
References core_, prophet::Node::dest_id(), enforce_quota(), find(), heap_add(), heap_del(), prophet::BundleCore::LOG_INFO, LOG_LT_MIN_LENGTH, MIN_LENGTH, name_, prophet::Node::p_value(), persistent_, prophet::BundleCore::print_log(), prophet::Node::set_custody(), prophet::Node::set_internet_gw(), prophet::Node::set_relay(), table_, prophet::BundleCore::update_node(), and prophet::Node::update_pvalue().
Referenced by prophet::Encounter::handle_rib_tlv().
| void prophet::Table::update_transitive | ( | const std::string & | peer_id, | |
| const RIBNodeList & | nodes, | |||
| const Dictionary & | ribd | |||
| ) |
Convenience wrapper around update_transitive to import entire RIB.
Definition at line 244 of file Table.cc.
References core_, enforce_quota(), find(), prophet::Dictionary::find(), heap_add(), heap_del(), prophet::Dictionary::INVALID_SID, prophet::BundleCore::LOG_INFO, LOG_LT_MIN_LENGTH, MIN_LENGTH, name_, prophet::Node::p_value(), p_value(), persistent_, prophet::BundleCore::print_log(), prophet::Node::set_custody(), prophet::Node::set_internet_gw(), prophet::Node::set_relay(), table_, prophet::BundleCore::update_node(), and prophet::Node::update_transitive().
| void prophet::Table::update_transitive | ( | const std::string & | dest_id, | |
| const std::string & | peer_id, | |||
| double | peer_pvalue, | |||
| bool | relay = Node::DEFAULT_RELAY, |
|||
| bool | custody = Node::DEFAULT_CUSTODY, |
|||
| bool | internet = Node::DEFAULT_INTERNET | |||
| ) |
Convenience function for updating transitively-discovered route in table.
Creates new node, else updates existing. On success, post-condition is update_transitive is called on node, then node is updated in Table.
Definition at line 200 of file Table.cc.
References core_, prophet::Node::dest_id(), enforce_quota(), find(), heap_add(), heap_del(), prophet::BundleCore::LOG_INFO, LOG_LT_MIN_LENGTH, MIN_LENGTH, name_, prophet::Node::p_value(), p_value(), persistent_, prophet::BundleCore::print_log(), prophet::Node::set_custody(), prophet::Node::set_internet_gw(), prophet::Node::set_relay(), table_, prophet::BundleCore::update_node(), and prophet::Node::update_transitive().
Referenced by prophet::Encounter::handle_rib_tlv().
BundleCore* const prophet::Table::core_ [protected] |
facade interface into Bundle host
Definition at line 229 of file Table.h.
Referenced by age_nodes(), assign(), enforce_quota(), p_value(), remove(), truncate(), update(), update_route(), and update_transitive().
NodeHeap prophet::Table::heap_ [protected] |
Min-heap for quota-enforcement eviction ordering.
Definition at line 231 of file Table.h.
Referenced by enforce_quota(), heap_add(), heap_begin(), heap_del(), heap_end(), and truncate().
u_int prophet::Table::max_route_ [protected] |
upper limit to number of routes to retain
Definition at line 235 of file Table.h.
Referenced by enforce_quota(), and set_max_route().
std::string prophet::Table::name_ [protected] |
object name
Definition at line 234 of file Table.h.
Referenced by age_nodes(), assign(), enforce_quota(), truncate(), update(), update_route(), and update_transitive().
bool prophet::Table::persistent_ [protected] |
whether to utilize BundleCore's persistent storage interface for Nodes
Definition at line 232 of file Table.h.
Referenced by age_nodes(), assign(), remove(), update(), update_route(), and update_transitive().
rib_table prophet::Table::table_ [protected] |
Mapped collection of <dest_id,Node*> pairs.
Definition at line 230 of file Table.h.
Referenced by age_nodes(), begin(), clone(), end(), enforce_quota(), find(), free(), remove(), size(), Table(), truncate(), update(), update_route(), update_transitive(), and ~Table().
1.6.3