|
CAF 0.17.6
|
Stores routing information for a single broker participating as BASP peer and provides both direct and indirect paths. More...
#include <routing_table.hpp>
Classes | |
| struct | route |
| Describes a routing path to a node. More... | |
Public Types | |
| using | handle_to_node_map = std::unordered_map< connection_handle, node_id > |
| using | node_to_handle_map = std::unordered_map< node_id, connection_handle > |
| using | node_id_set = std::unordered_set< node_id > |
Public Member Functions | |
| routing_table (abstract_broker *parent) | |
| optional< route > | lookup (const node_id &target) |
Returns a route to target or none on error. | |
| node_id | lookup_direct (const connection_handle &hdl) const |
Returns the ID of the peer connected via hdl or none if hdl is unknown. | |
| optional< connection_handle > | lookup_direct (const node_id &nid) const |
Returns the handle offering a direct connection to nid or invalid_connection_handle if no direct connection to nid exists. | |
| node_id | lookup_indirect (const node_id &nid) const |
Returns the next hop that would be chosen for nid or none if there's no indirect route to nid. | |
| void | add_direct (const connection_handle &hdl, const node_id &nid) |
| Adds a new direct route to the table. | |
| void | add_alternative (const connection_handle &hdl, const node_id &nid) |
| When two CAF nodes connect to each other, multiple connections might spin up simultaneously until both sides agree to a single connection. | |
| void | select_alternative (const connection_handle &hdl, const node_id &nid) |
Forces lookup_direct to always resolve nid to hdl. | |
| bool | add_indirect (const node_id &hop, const node_id &dest) |
| Adds a new indirect route to the table. | |
| node_id | erase_direct (const connection_handle &hdl) |
| Removes a direct connection and return the node ID that became unreachable as a result of this operation. | |
| bool | erase_indirect (const node_id &dest) |
Removes any entry for indirect connection to dest and returns true if dest had an indirect route, otherwise false. | |
| abstract_broker * | parent () |
| Returns the parent broker. | |
Public Attributes | |
| abstract_broker * | parent_ |
| std::mutex | mtx_ |
| handle_to_node_map | direct_by_hdl_ |
| node_to_handle_map | direct_by_nid_ |
| std::unordered_map< node_id, node_id_set > | indirect_ |
Stores routing information for a single broker participating as BASP peer and provides both direct and indirect paths.
| void caf::io::basp::routing_table::add_alternative | ( | const connection_handle & | hdl, |
| const node_id & | nid | ||
| ) |
When two CAF nodes connect to each other, multiple connections might spin up simultaneously until both sides agree to a single connection.
lookup_direct(hdl == nid) | void caf::io::basp::routing_table::add_direct | ( | const connection_handle & | hdl, |
| const node_id & | nid | ||
| ) |
Adds a new direct route to the table.
hdl != invalid_connection_handle && nid != none