TARAXA
taraxa::network::tarcap::PeersState Class Reference

PeersState contains common members and functions related to peers, host, etc... that are shared among multiple classes. More...

#include <peers_state.hpp>

Collaboration diagram for taraxa::network::tarcap::PeersState:

Public Types

using PeersMap = std::unordered_map< dev::p2p::NodeID, std::shared_ptr< TaraxaPeer > >
 

Public Member Functions

 PeersState (std::weak_ptr< dev::p2p::Host > host, const FullNodeConfig &conf)
 
std::shared_ptr< TaraxaPeergetPeer (const dev::p2p::NodeID &node_id) const
 
std::shared_ptr< TaraxaPeergetPendingPeer (const dev::p2p::NodeID &node_id) const
 
std::pair< std::shared_ptr< TaraxaPeer >, std::string > getPacketSenderPeer (const dev::p2p::NodeID &node_id, SubprotocolPacketType packet_type) const
 Get known peer based on packet sender and packet type. For StatusPacket peer can be obtained from pending_peers, for all other packet types peer can be obtained only from peers map, in which are only peers that already sent initial StatusPacket. More...
 
PeersMap getAllPeers () const
 
std::vector< dev::p2p::NodeIDgetAllPendingPeersIDs () const
 
size_t getPeersCount () const
 
std::shared_ptr< TaraxaPeeraddPendingPeer (const dev::p2p::NodeID &node_id, const std::string &address)
 
void erasePeer (const dev::p2p::NodeID &node_id)
 
std::shared_ptr< TaraxaPeersetPeerAsReadyToSendMessages (dev::p2p::NodeID const &node_id, std::shared_ptr< TaraxaPeer > peer)
 
void set_peer_malicious (const dev::p2p::NodeID &peer_id)
 Marks peer as malicious. More...
 
bool is_peer_malicious (const dev::p2p::NodeID &peer_id)
 Checks if peer is in malicious peers list. More...
 

Public Attributes

const std::weak_ptr< dev::p2p::Hosthost_
 

Private Attributes

std::shared_mutex peers_mutex_
 
PeersMap peers_
 
PeersMap pending_peers_
 
ThreadSafeMap< dev::p2p::NodeID, std::chrono::steady_clock::time_point > malicious_peers_
 
const FullNodeConfig kConf
 

Detailed Description

PeersState contains common members and functions related to peers, host, etc... that are shared among multiple classes.

Member Typedef Documentation

◆ PeersMap

using taraxa::network::tarcap::PeersState::PeersMap = std::unordered_map<dev::p2p::NodeID, std::shared_ptr<TaraxaPeer> >

Constructor & Destructor Documentation

◆ PeersState()

taraxa::network::tarcap::PeersState::PeersState ( std::weak_ptr< dev::p2p::Host host,
const FullNodeConfig conf 
)

Member Function Documentation

◆ addPendingPeer()

std::shared_ptr< TaraxaPeer > taraxa::network::tarcap::PeersState::addPendingPeer ( const dev::p2p::NodeID node_id,
const std::string &  address 
)

◆ erasePeer()

void taraxa::network::tarcap::PeersState::erasePeer ( const dev::p2p::NodeID node_id)

◆ getAllPeers()

PeersState::PeersMap taraxa::network::tarcap::PeersState::getAllPeers ( ) const

◆ getAllPendingPeersIDs()

std::vector< dev::p2p::NodeID > taraxa::network::tarcap::PeersState::getAllPendingPeersIDs ( ) const

◆ getPacketSenderPeer()

std::pair< std::shared_ptr< TaraxaPeer >, std::string > taraxa::network::tarcap::PeersState::getPacketSenderPeer ( const dev::p2p::NodeID node_id,
SubprotocolPacketType  packet_type 
) const

Get known peer based on packet sender and packet type. For StatusPacket peer can be obtained from pending_peers, for all other packet types peer can be obtained only from peers map, in which are only peers that already sent initial StatusPacket.

Returns
<std::shared_ptr<TaraxaPeer>, ""> if packet sender is known peer, otherwise <nullptr, "err message">

◆ getPeer()

std::shared_ptr< TaraxaPeer > taraxa::network::tarcap::PeersState::getPeer ( const dev::p2p::NodeID node_id) const

◆ getPeersCount()

size_t taraxa::network::tarcap::PeersState::getPeersCount ( ) const

◆ getPendingPeer()

std::shared_ptr< TaraxaPeer > taraxa::network::tarcap::PeersState::getPendingPeer ( const dev::p2p::NodeID node_id) const

◆ is_peer_malicious()

bool taraxa::network::tarcap::PeersState::is_peer_malicious ( const dev::p2p::NodeID peer_id)

Checks if peer is in malicious peers list.

Returns
returns true if peer is in malicious peer list

◆ set_peer_malicious()

void taraxa::network::tarcap::PeersState::set_peer_malicious ( const dev::p2p::NodeID peer_id)

Marks peer as malicious.

Parameters
peer_id

◆ setPeerAsReadyToSendMessages()

std::shared_ptr< TaraxaPeer > taraxa::network::tarcap::PeersState::setPeerAsReadyToSendMessages ( dev::p2p::NodeID const &  node_id,
std::shared_ptr< TaraxaPeer peer 
)

Member Data Documentation

◆ host_

const std::weak_ptr<dev::p2p::Host> taraxa::network::tarcap::PeersState::host_

◆ kConf

const FullNodeConfig taraxa::network::tarcap::PeersState::kConf
private

◆ malicious_peers_

ThreadSafeMap<dev::p2p::NodeID, std::chrono::steady_clock::time_point> taraxa::network::tarcap::PeersState::malicious_peers_
private

◆ peers_

PeersMap taraxa::network::tarcap::PeersState::peers_
private

◆ peers_mutex_

std::shared_mutex taraxa::network::tarcap::PeersState::peers_mutex_
mutableprivate

◆ pending_peers_

PeersMap taraxa::network::tarcap::PeersState::pending_peers_
private

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