TARAXA
taraxa::network::tarcap::TaraxaCapability Class Referencefinal

#include <taraxa_capability.hpp>

Collaboration diagram for taraxa::network::tarcap::TaraxaCapability:

Public Types

using InitPacketsHandlers = std::function< std::shared_ptr< PacketsHandler >(const std::string &logs_prefix, const FullNodeConfig &config, const h256 &genesis_hash, const std::shared_ptr< PeersState > &peers_state, const std::shared_ptr< PbftSyncingState > &pbft_syncing_state, const std::shared_ptr< tarcap::TimePeriodPacketsStats > &packets_stats, const std::shared_ptr< DbStorage > &db, const std::shared_ptr< PbftManager > &pbft_mgr, const std::shared_ptr< PbftChain > &pbft_chain, const std::shared_ptr< VoteManager > &vote_mgr, const std::shared_ptr< DagManager > &dag_mgr, const std::shared_ptr< TransactionManager > &trx_mgr, const std::shared_ptr< SlashingManager > &slashing_manager, const std::shared_ptr< pillar_chain::PillarChainManager > &pillar_chain_mgr, TarcapVersion version, const addr_t &node_addr)>
 Function signature for creating taraxa capability packets handlers. More...
 

Public Member Functions

 TaraxaCapability (TarcapVersion version, const FullNodeConfig &conf, const h256 &genesis_hash, std::weak_ptr< dev::p2p::Host > host, const dev::KeyPair &key, std::shared_ptr< network::threadpool::PacketsThreadPool > threadpool, std::shared_ptr< TimePeriodPacketsStats > packets_stats, std::shared_ptr< PbftSyncingState > syncing_state, std::shared_ptr< DbStorage > db, std::shared_ptr< PbftManager > pbft_mgr, std::shared_ptr< PbftChain > pbft_chain, std::shared_ptr< VoteManager > vote_mgr, std::shared_ptr< DagManager > dag_mgr, std::shared_ptr< TransactionManager > trx_mgr, std::shared_ptr< SlashingManager > slashing_manager, std::shared_ptr< pillar_chain::PillarChainManager > pillar_chain_mgr, InitPacketsHandlers init_packets_handlers=kInitLatestVersionHandlers)
 
virtual ~TaraxaCapability ()=default
 
 TaraxaCapability (const TaraxaCapability &ro)=delete
 
TaraxaCapabilityoperator= (const TaraxaCapability &ro)=delete
 
 TaraxaCapability (TaraxaCapability &&ro)=delete
 
TaraxaCapabilityoperator= (TaraxaCapability &&ro)=delete
 
std::string name () const override
 Subprotocol name, used in negotiating common capabilities with the peers. More...
 
TarcapVersion version () const override
 
unsigned messageCount () const override
 Number of messages supported by the subprotocol version. More...
 
void onConnect (std::weak_ptr< dev::p2p::Session > session, u256 const &) override
 
void onDisconnect (dev::p2p::NodeID const &_nodeID) override
 
void interpretCapabilityPacket (std::weak_ptr< dev::p2p::Session > session, unsigned _id, dev::RLP const &_r) override
 
std::string packetTypeToString (unsigned _packetType) const override
 Convert supplied packet type to string - used for logging purposes. More...
 
const std::shared_ptr< PeersState > & getPeersState ()
 
template<typename PacketHandlerType >
std::shared_ptr< PacketHandlerType > getSpecificHandler () const
 
- Public Member Functions inherited from dev::p2p::CapabilityFace
virtual ~CapabilityFace ()=default
 

Static Public Attributes

static const InitPacketsHandlers kInitLatestVersionHandlers
 Default InitPacketsHandlers function definition with the latest version of packets handlers. More...
 
static const InitPacketsHandlers kInitV3Handlers
 

Private Member Functions

bool filterSyncIrrelevantPackets (SubprotocolPacketType packet_type) const
 
void handlePacketQueueOverLimit (std::shared_ptr< dev::p2p::Host > host, dev::p2p::NodeID node_id, size_t tp_queue_size)
 

Private Attributes

TarcapVersion version_
 
std::shared_ptr< TimePeriodPacketsStatsall_packets_stats_
 
const FullNodeConfigkConf
 
std::shared_ptr< PeersStatepeers_state_
 
std::shared_ptr< PbftSyncingStatepbft_syncing_state_
 
std::shared_ptr< PacketsHandlerpackets_handlers_
 
std::shared_ptr< threadpool::PacketsThreadPoolthread_pool_
 
std::chrono::system_clock::time_point last_ddos_disconnect_time_ = {}
 
std::chrono::system_clock::time_point queue_over_limit_start_time_ = {}
 
bool queue_over_limit_ = false
 
uint32_t last_disconnect_number_of_peers_ = 0
 

Member Typedef Documentation

◆ InitPacketsHandlers

using taraxa::network::tarcap::TaraxaCapability::InitPacketsHandlers = std::function<std::shared_ptr<PacketsHandler>( const std::string &logs_prefix, const FullNodeConfig &config, const h256 &genesis_hash, const std::shared_ptr<PeersState> &peers_state, const std::shared_ptr<PbftSyncingState> &pbft_syncing_state, const std::shared_ptr<tarcap::TimePeriodPacketsStats> &packets_stats, const std::shared_ptr<DbStorage> &db, const std::shared_ptr<PbftManager> &pbft_mgr, const std::shared_ptr<PbftChain> &pbft_chain, const std::shared_ptr<VoteManager> &vote_mgr, const std::shared_ptr<DagManager> &dag_mgr, const std::shared_ptr<TransactionManager> &trx_mgr, const std::shared_ptr<SlashingManager> &slashing_manager, const std::shared_ptr<pillar_chain::PillarChainManager> &pillar_chain_mgr, TarcapVersion version, const addr_t &node_addr)>

Function signature for creating taraxa capability packets handlers.

Constructor & Destructor Documentation

◆ TaraxaCapability() [1/3]

taraxa::network::tarcap::TaraxaCapability::TaraxaCapability ( TarcapVersion  version,
const FullNodeConfig conf,
const h256 genesis_hash,
std::weak_ptr< dev::p2p::Host host,
const dev::KeyPair key,
std::shared_ptr< network::threadpool::PacketsThreadPool threadpool,
std::shared_ptr< TimePeriodPacketsStats packets_stats,
std::shared_ptr< PbftSyncingState syncing_state,
std::shared_ptr< DbStorage db,
std::shared_ptr< PbftManager pbft_mgr,
std::shared_ptr< PbftChain pbft_chain,
std::shared_ptr< VoteManager vote_mgr,
std::shared_ptr< DagManager dag_mgr,
std::shared_ptr< TransactionManager trx_mgr,
std::shared_ptr< SlashingManager slashing_manager,
std::shared_ptr< pillar_chain::PillarChainManager pillar_chain_mgr,
InitPacketsHandlers  init_packets_handlers = kInitLatestVersionHandlers 
)

◆ ~TaraxaCapability()

virtual taraxa::network::tarcap::TaraxaCapability::~TaraxaCapability ( )
virtualdefault

◆ TaraxaCapability() [2/3]

taraxa::network::tarcap::TaraxaCapability::TaraxaCapability ( const TaraxaCapability ro)
delete

◆ TaraxaCapability() [3/3]

taraxa::network::tarcap::TaraxaCapability::TaraxaCapability ( TaraxaCapability &&  ro)
delete

Member Function Documentation

◆ filterSyncIrrelevantPackets()

bool taraxa::network::tarcap::TaraxaCapability::filterSyncIrrelevantPackets ( SubprotocolPacketType  packet_type) const
inlineprivate

◆ getPeersState()

const std::shared_ptr< PeersState > & taraxa::network::tarcap::TaraxaCapability::getPeersState ( )

◆ getSpecificHandler()

template<typename PacketHandlerType >
std::shared_ptr< PacketHandlerType > taraxa::network::tarcap::TaraxaCapability::getSpecificHandler

◆ handlePacketQueueOverLimit()

void taraxa::network::tarcap::TaraxaCapability::handlePacketQueueOverLimit ( std::shared_ptr< dev::p2p::Host host,
dev::p2p::NodeID  node_id,
size_t  tp_queue_size 
)
private

◆ interpretCapabilityPacket()

void taraxa::network::tarcap::TaraxaCapability::interpretCapabilityPacket ( std::weak_ptr< dev::p2p::Session session,
unsigned  packet_type,
dev::RLP const &  payload 
)
overridevirtual

Called by the Host when the messaege is received from the peer

Returns
true if the message was interpreted, false if the message had not supported type.

Implements dev::p2p::CapabilityFace.

◆ messageCount()

unsigned taraxa::network::tarcap::TaraxaCapability::messageCount ( ) const
overridevirtual

Number of messages supported by the subprotocol version.

Implements dev::p2p::CapabilityFace.

◆ name()

std::string taraxa::network::tarcap::TaraxaCapability::name ( ) const
overridevirtual

Subprotocol name, used in negotiating common capabilities with the peers.

Implements dev::p2p::CapabilityFace.

◆ onConnect()

void taraxa::network::tarcap::TaraxaCapability::onConnect ( std::weak_ptr< dev::p2p::Session session,
u256 const &  _peerCapabilityVersion 
)
overridevirtual

Called by the Host when new peer is connected. Guaranteed to be called first before any interpretCapabilityPacket for this peer.

Implements dev::p2p::CapabilityFace.

◆ onDisconnect()

void taraxa::network::tarcap::TaraxaCapability::onDisconnect ( dev::p2p::NodeID const &  _nodeID)
overridevirtual

Called by the Host when the peer is disconnected. Guaranteed to be called last after any interpretCapabilityPacket for this peer.

Implements dev::p2p::CapabilityFace.

◆ operator=() [1/2]

TaraxaCapability& taraxa::network::tarcap::TaraxaCapability::operator= ( const TaraxaCapability ro)
delete

◆ operator=() [2/2]

TaraxaCapability& taraxa::network::tarcap::TaraxaCapability::operator= ( TaraxaCapability &&  ro)
delete

◆ packetTypeToString()

std::string taraxa::network::tarcap::TaraxaCapability::packetTypeToString ( unsigned  _packetType) const
overridevirtual

Convert supplied packet type to string - used for logging purposes.

Implements dev::p2p::CapabilityFace.

◆ version()

TarcapVersion taraxa::network::tarcap::TaraxaCapability::version ( ) const
overridevirtual

Subprotocol version, used in negotiating common capabilities with the peers.

Implements dev::p2p::CapabilityFace.

Member Data Documentation

◆ all_packets_stats_

std::shared_ptr<TimePeriodPacketsStats> taraxa::network::tarcap::TaraxaCapability::all_packets_stats_
private

◆ kConf

const FullNodeConfig& taraxa::network::tarcap::TaraxaCapability::kConf
private

◆ kInitLatestVersionHandlers

const TaraxaCapability::InitPacketsHandlers taraxa::network::tarcap::TaraxaCapability::kInitLatestVersionHandlers
static

Default InitPacketsHandlers function definition with the latest version of packets handlers.

◆ kInitV3Handlers

const TaraxaCapability::InitPacketsHandlers taraxa::network::tarcap::TaraxaCapability::kInitV3Handlers
static

◆ last_ddos_disconnect_time_

std::chrono::system_clock::time_point taraxa::network::tarcap::TaraxaCapability::last_ddos_disconnect_time_ = {}
private

◆ last_disconnect_number_of_peers_

uint32_t taraxa::network::tarcap::TaraxaCapability::last_disconnect_number_of_peers_ = 0
private

◆ packets_handlers_

std::shared_ptr<PacketsHandler> taraxa::network::tarcap::TaraxaCapability::packets_handlers_
private

◆ pbft_syncing_state_

std::shared_ptr<PbftSyncingState> taraxa::network::tarcap::TaraxaCapability::pbft_syncing_state_
private

◆ peers_state_

std::shared_ptr<PeersState> taraxa::network::tarcap::TaraxaCapability::peers_state_
private

◆ queue_over_limit_

bool taraxa::network::tarcap::TaraxaCapability::queue_over_limit_ = false
private

◆ queue_over_limit_start_time_

std::chrono::system_clock::time_point taraxa::network::tarcap::TaraxaCapability::queue_over_limit_start_time_ = {}
private

◆ thread_pool_

std::shared_ptr<threadpool::PacketsThreadPool> taraxa::network::tarcap::TaraxaCapability::thread_pool_
private

◆ version_

TarcapVersion taraxa::network::tarcap::TaraxaCapability::version_
private

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