TARAXA
taraxa::network::tarcap::PbftSyncPacketHandler Class Reference

#include <pbft_sync_packet_handler.hpp>

Collaboration diagram for taraxa::network::tarcap::PbftSyncPacketHandler:

Public Member Functions

 PbftSyncPacketHandler (const FullNodeConfig &conf, std::shared_ptr< PeersState > peers_state, std::shared_ptr< TimePeriodPacketsStats > packets_stats, std::shared_ptr< PbftSyncingState > pbft_syncing_state, std::shared_ptr< PbftChain > pbft_chain, std::shared_ptr< PbftManager > pbft_mgr, std::shared_ptr< DagManager > dag_mgr, std::shared_ptr< VoteManager > vote_mgr, std::shared_ptr< DbStorage > db, const addr_t &node_addr, const std::string &logs_prefix="PBFT_SYNC_PH")
 
void handleMaliciousSyncPeer (const dev::p2p::NodeID &id)
 
- Public Member Functions inherited from taraxa::network::tarcap::ExtSyncingPacketHandler
 ExtSyncingPacketHandler (const FullNodeConfig &conf, std::shared_ptr< PeersState > peers_state, std::shared_ptr< TimePeriodPacketsStats > packets_stats, std::shared_ptr< PbftSyncingState > pbft_syncing_state, std::shared_ptr< PbftChain > pbft_chain, std::shared_ptr< PbftManager > pbft_mgr, std::shared_ptr< DagManager > dag_mgr, std::shared_ptr< DbStorage > db, const addr_t &node_addr, const std::string &log_channel_name)
 
virtual ~ExtSyncingPacketHandler ()=default
 
ExtSyncingPacketHandleroperator= (const ExtSyncingPacketHandler &)=delete
 
ExtSyncingPacketHandleroperator= (ExtSyncingPacketHandler &&)=delete
 
void startSyncingPbft ()
 Start syncing pbft if needed. More...
 
bool syncPeerPbft (PbftPeriod request_period)
 Send sync request to the current syncing peer with specified request_period. More...
 
void requestDagBlocks (const dev::p2p::NodeID &_nodeID, const std::unordered_set< blk_hash_t > &blocks, PbftPeriod period)
 
void requestPendingDagBlocks (std::shared_ptr< TaraxaPeer > peer=nullptr)
 
std::shared_ptr< TaraxaPeergetMaxChainPeer (std::function< bool(const std::shared_ptr< TaraxaPeer > &)> filter_func=[](const std::shared_ptr< TaraxaPeer > &) { return true;})
 
- Public Member Functions inherited from taraxa::network::tarcap::PacketHandler
 PacketHandler (const FullNodeConfig &conf, std::shared_ptr< PeersState > peers_state, std::shared_ptr< TimePeriodPacketsStats > packets_stats, const addr_t &node_addr, const std::string &log_channel_name)
 
virtual ~PacketHandler ()=default
 
 PacketHandler (const PacketHandler &)=default
 
 PacketHandler (PacketHandler &&)=default
 
PacketHandleroperator= (const PacketHandler &)=delete
 
PacketHandleroperator= (PacketHandler &&)=delete
 
void processPacket (const threadpool::PacketData &packet_data)
 Packet processing function wrapper that logs packet stats and calls process function. More...
 
void requestPbftNextVotesAtPeriodRound (const dev::p2p::NodeID &peerID, PbftPeriod pbft_period, PbftRound pbft_round)
 

Static Public Attributes

static constexpr SubprotocolPacketType kPacketType_ = SubprotocolPacketType::PbftSyncPacket
 

Protected Member Functions

virtual PeriodData decodePeriodData (const dev::RLP &period_data_rlp) const
 
virtual std::vector< std::shared_ptr< PbftVote > > decodeVotesBundle (const dev::RLP &votes_bundle_rlp) const
 
void pbftSyncComplete ()
 
void delayedPbftSync (int counter)
 
- Protected Member Functions inherited from taraxa::network::tarcap::PacketHandler
void checkPacketRlpIsList (const threadpool::PacketData &packet_data) const
 Checks if packet rlp is a list, if not it throws InvalidRlpItemsCountException. More...
 
bool sealAndSend (const dev::p2p::NodeID &nodeID, SubprotocolPacketType packet_type, dev::RLPStream &&rlp)
 
void disconnect (const dev::p2p::NodeID &node_id, dev::p2p::DisconnectReason reason)
 

Protected Attributes

std::shared_ptr< VoteManagervote_mgr_
 
util::ThreadPool periodic_events_tp_
 
- Protected Attributes inherited from taraxa::network::tarcap::ExtSyncingPacketHandler
std::shared_ptr< PbftSyncingStatepbft_syncing_state_ {nullptr}
 
std::shared_ptr< PbftChainpbft_chain_ {nullptr}
 
std::shared_ptr< PbftManagerpbft_mgr_ {nullptr}
 
std::shared_ptr< DagManagerdag_mgr_ {nullptr}
 
std::shared_ptr< DbStoragedb_ {nullptr}
 
- Protected Attributes inherited from taraxa::network::tarcap::PacketHandler
const FullNodeConfigkConf
 
std::shared_ptr< PeersStatepeers_state_ {nullptr}
 
std::shared_ptr< TimePeriodPacketsStatspackets_stats_
 

Static Protected Attributes

static constexpr uint32_t kDelayedPbftSyncDelayMs = 10
 
static constexpr size_t kStandardPacketSize = 2
 
static constexpr size_t kChainSyncedPacketSize = 3
 

Private Member Functions

virtual void validatePacketRlpFormat (const threadpool::PacketData &packet_data) const override
 Validates packet rlp format - items count. More...
 
virtual void process (const threadpool::PacketData &packet_data, const std::shared_ptr< TaraxaPeer > &peer) override
 Main packet processing function. More...
 

Constructor & Destructor Documentation

◆ PbftSyncPacketHandler()

taraxa::network::tarcap::PbftSyncPacketHandler::PbftSyncPacketHandler ( const FullNodeConfig conf,
std::shared_ptr< PeersState peers_state,
std::shared_ptr< TimePeriodPacketsStats packets_stats,
std::shared_ptr< PbftSyncingState pbft_syncing_state,
std::shared_ptr< PbftChain pbft_chain,
std::shared_ptr< PbftManager pbft_mgr,
std::shared_ptr< DagManager dag_mgr,
std::shared_ptr< VoteManager vote_mgr,
std::shared_ptr< DbStorage db,
const addr_t node_addr,
const std::string &  logs_prefix = "PBFT_SYNC_PH" 
)

Member Function Documentation

◆ decodePeriodData()

PeriodData taraxa::network::tarcap::PbftSyncPacketHandler::decodePeriodData ( const dev::RLP period_data_rlp) const
protectedvirtual

◆ decodeVotesBundle()

std::vector< std::shared_ptr< PbftVote > > taraxa::network::tarcap::PbftSyncPacketHandler::decodeVotesBundle ( const dev::RLP votes_bundle_rlp) const
protectedvirtual

◆ delayedPbftSync()

void taraxa::network::tarcap::PbftSyncPacketHandler::delayedPbftSync ( int  counter)
protected

◆ handleMaliciousSyncPeer()

void taraxa::network::tarcap::PbftSyncPacketHandler::handleMaliciousSyncPeer ( const dev::p2p::NodeID id)

◆ pbftSyncComplete()

void taraxa::network::tarcap::PbftSyncPacketHandler::pbftSyncComplete ( )
protected

◆ process()

void taraxa::network::tarcap::PbftSyncPacketHandler::process ( const threadpool::PacketData packet_data,
const std::shared_ptr< TaraxaPeer > &  peer 
)
overrideprivatevirtual

Main packet processing function.

Implements taraxa::network::tarcap::PacketHandler.

◆ validatePacketRlpFormat()

void taraxa::network::tarcap::PbftSyncPacketHandler::validatePacketRlpFormat ( const threadpool::PacketData packet_data) const
overrideprivatevirtual

Validates packet rlp format - items count.

Exceptions
InvalidRlpItemsCountExceptionexception

Implements taraxa::network::tarcap::PacketHandler.

Member Data Documentation

◆ kChainSyncedPacketSize

constexpr size_t taraxa::network::tarcap::PbftSyncPacketHandler::kChainSyncedPacketSize = 3
staticconstexprprotected

◆ kDelayedPbftSyncDelayMs

constexpr uint32_t taraxa::network::tarcap::PbftSyncPacketHandler::kDelayedPbftSyncDelayMs = 10
staticconstexprprotected

◆ kPacketType_

constexpr SubprotocolPacketType taraxa::network::tarcap::PbftSyncPacketHandler::kPacketType_ = SubprotocolPacketType::PbftSyncPacket
staticconstexpr

◆ kStandardPacketSize

constexpr size_t taraxa::network::tarcap::PbftSyncPacketHandler::kStandardPacketSize = 2
staticconstexprprotected

◆ periodic_events_tp_

util::ThreadPool taraxa::network::tarcap::PbftSyncPacketHandler::periodic_events_tp_
protected

◆ vote_mgr_

std::shared_ptr<VoteManager> taraxa::network::tarcap::PbftSyncPacketHandler::vote_mgr_
protected

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