TARAXA
dev::p2p::EndpointTracker Class Reference

#include <EndpointTracker.h>

Public Member Functions

size_t addEndpointStatement (bi::udp::endpoint const &_sourceEndpoint, bi::udp::endpoint const &_externalEndpoint)
 
bi::udp::endpoint bestEndpoint () const
 Find endpoint with max number of statements. More...
 
void garbageCollectStatements (std::chrono::seconds const &_timeToLive)
 Remove statements older than _timeToLive. More...
 

Private Types

using EndpointAndTimePoint = std::pair< bi::udp::endpoint, std::chrono::steady_clock::time_point >
 
using SourceToStatementMap = std::map< bi::udp::endpoint, EndpointAndTimePoint >
 

Private Member Functions

size_t addStatement (bi::udp::endpoint const &_sourceEndpoint, bi::udp::endpoint const &_externalEndpoint)
 
SourceToStatementMap::iterator removeStatement (SourceToStatementMap::iterator _it)
 

Private Attributes

SourceToStatementMap m_statementsMap
 
std::map< bi::udp::endpoint, size_t > m_endpointStatementCountMap
 map external endpoint => how many sources reported it More...
 

Detailed Description

Class for keeping track of our external endpoint as seen by our peers. Keeps track of what external endpoint is seen by every peer and finds which endpoint is reported most often

Member Typedef Documentation

◆ EndpointAndTimePoint

using dev::p2p::EndpointTracker::EndpointAndTimePoint = std::pair<bi::udp::endpoint, std::chrono::steady_clock::time_point>
private

◆ SourceToStatementMap

using dev::p2p::EndpointTracker::SourceToStatementMap = std::map<bi::udp::endpoint, EndpointAndTimePoint>
private

Member Function Documentation

◆ addEndpointStatement()

size_t dev::p2p::EndpointTracker::addEndpointStatement ( bi::udp::endpoint const &  _sourceEndpoint,
bi::udp::endpoint const &  _externalEndpoint 
)

Register the statement about endpoint from one of the peers.

Returns
number of currently kept statements in favor of _externalEndpoint

Register the statement about endpoint from one othe peers.

Returns
number of currently kept statements in favor of _externalEndpoint

◆ addStatement()

size_t dev::p2p::EndpointTracker::addStatement ( bi::udp::endpoint const &  _sourceEndpoint,
bi::udp::endpoint const &  _externalEndpoint 
)
private

◆ bestEndpoint()

bi::udp::endpoint dev::p2p::EndpointTracker::bestEndpoint ( ) const

Find endpoint with max number of statements.

Find endpoint with max number of statemens.

◆ garbageCollectStatements()

void dev::p2p::EndpointTracker::garbageCollectStatements ( std::chrono::seconds const &  _timeToLive)

Remove statements older than _timeToLive.

Remove old statements.

◆ removeStatement()

EndpointTracker::SourceToStatementMap::iterator dev::p2p::EndpointTracker::removeStatement ( SourceToStatementMap::iterator  _it)
private

Member Data Documentation

◆ m_endpointStatementCountMap

std::map<bi::udp::endpoint, size_t> dev::p2p::EndpointTracker::m_endpointStatementCountMap
private

map external endpoint => how many sources reported it

◆ m_statementsMap

SourceToStatementMap dev::p2p::EndpointTracker::m_statementsMap
private

Statements about our external endpoint, maps statement source peer => endpoint, timestamp


The documentation for this class was generated from the following files: