rippled
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ripple::HashRouter Class Reference

Routing table for objects identified by hash. More...

#include <HashRouter.h>

Collaboration diagram for ripple::HashRouter:
Collaboration graph
[legend]

Classes

class  Entry
 An entry in the routing table. More...
 
struct  Setup
 Structure used to customize HashRouter behavior. More...
 

Public Types

using PeerShortID = std::uint32_t
 

Public Member Functions

 HashRouter (Setup const &setup, Stopwatch &clock)
 
HashRouteroperator= (HashRouter const &)=delete
 
virtual ~HashRouter ()=default
 
void addSuppression (uint256 const &key)
 
bool addSuppressionPeer (uint256 const &key, PeerShortID peer)
 
std::pair< bool, std::optional< Stopwatch::time_point > > addSuppressionPeerWithStatus (uint256 const &key, PeerShortID peer)
 Add a suppression peer and get message's relay status.
 
bool addSuppressionPeer (uint256 const &key, PeerShortID peer, HashRouterFlags &flags)
 
bool shouldProcess (uint256 const &key, PeerShortID peer, HashRouterFlags &flags, std::chrono::seconds tx_interval)
 
bool setFlags (uint256 const &key, HashRouterFlags flags)
 Set the flags on a hash.
 
HashRouterFlags getFlags (uint256 const &key)
 
std::optional< std::set< PeerShortID > > shouldRelay (uint256 const &key)
 Determines whether the hashed item should be relayed.
 

Private Member Functions

std::pair< Entry &, bool > emplace (uint256 const &)
 

Private Attributes

std::mutex mutex_
 
Setup const setup_
 
beast::aged_unordered_map< uint256, Entry, Stopwatch::clock_type, hardened_hash< strong_hash > > suppressionMap_
 

Detailed Description

Routing table for objects identified by hash.

This table keeps track of which hashes have been received by which peers. It is used to manage the routing and broadcasting of messages in the peer to peer overlay.

Definition at line 96 of file HashRouter.h.

Member Typedef Documentation

◆ PeerShortID

Definition at line 100 of file HashRouter.h.

Constructor & Destructor Documentation

◆ HashRouter()

ripple::HashRouter::HashRouter ( Setup const &  setup,
Stopwatch clock 
)

Definition at line 205 of file HashRouter.h.

◆ ~HashRouter()

virtual ripple::HashRouter::~HashRouter ( )
virtualdefault

Member Function Documentation

◆ operator=()

HashRouter & ripple::HashRouter::operator= ( HashRouter const &  )
delete

◆ addSuppression()

void ripple::HashRouter::addSuppression ( uint256 const &  key)

Definition at line 44 of file HashRouter.cpp.

◆ addSuppressionPeer() [1/2]

bool ripple::HashRouter::addSuppressionPeer ( uint256 const &  key,
PeerShortID  peer 
)

Definition at line 52 of file HashRouter.cpp.

◆ addSuppressionPeerWithStatus()

std::pair< bool, std::optional< Stopwatch::time_point > > ripple::HashRouter::addSuppressionPeerWithStatus ( uint256 const &  key,
PeerShortID  peer 
)

Add a suppression peer and get message's relay status.

Return pair: element 1: true if the peer is added. element 2: optional is seated to the relay time point or is unseated if has not relayed yet.

Definition at line 58 of file HashRouter.cpp.

◆ addSuppressionPeer() [2/2]

bool ripple::HashRouter::addSuppressionPeer ( uint256 const &  key,
PeerShortID  peer,
HashRouterFlags flags 
)

Definition at line 68 of file HashRouter.cpp.

◆ shouldProcess()

bool ripple::HashRouter::shouldProcess ( uint256 const &  key,
PeerShortID  peer,
HashRouterFlags flags,
std::chrono::seconds  tx_interval 
)

Definition at line 82 of file HashRouter.cpp.

◆ setFlags()

bool ripple::HashRouter::setFlags ( uint256 const &  key,
HashRouterFlags  flags 
)

Set the flags on a hash.

Returns
true if the flags were changed. false if unchanged.

Definition at line 106 of file HashRouter.cpp.

◆ getFlags()

HashRouterFlags ripple::HashRouter::getFlags ( uint256 const &  key)

Definition at line 98 of file HashRouter.cpp.

◆ shouldRelay()

auto ripple::HashRouter::shouldRelay ( uint256 const &  key)

Determines whether the hashed item should be relayed.

Effects:

If the item should be relayed, this function will not
return a seated optional again until the relay time has expired.
The internal set of peers will also be reset.
Returns
A std::optional set of peers which do not need to be relayed to. If the result is unseated, the item should not be relayed.

Definition at line 123 of file HashRouter.cpp.

◆ emplace()

auto ripple::HashRouter::emplace ( uint256 const &  key)
private

Definition at line 26 of file HashRouter.cpp.

Member Data Documentation

◆ mutex_

std::mutex ripple::HashRouter::mutex_
mutableprivate

Definition at line 275 of file HashRouter.h.

◆ setup_

Setup const ripple::HashRouter::setup_
private

Definition at line 278 of file HashRouter.h.

◆ suppressionMap_

beast::aged_unordered_map< uint256, Entry, Stopwatch::clock_type, hardened_hash<strong_hash> > ripple::HashRouter::suppressionMap_
private

Definition at line 286 of file HashRouter.h.