TARAXA
taraxa::network::tarcap::ExtVotesPacketHandler Class Reference

ExtVotesPacketHandler is extended abstract PacketHandler with added functions that are used in packet handlers that process pbft votes. More...

#include <ext_votes_packet_handler.hpp>

Collaboration diagram for taraxa::network::tarcap::ExtVotesPacketHandler:

Public Member Functions

 ExtVotesPacketHandler (const FullNodeConfig &conf, std::shared_ptr< PeersState > peers_state, std::shared_ptr< TimePeriodPacketsStats > packets_stats, std::shared_ptr< PbftManager > pbft_mgr, std::shared_ptr< PbftChain > pbft_chain, std::shared_ptr< VoteManager > vote_mgr, std::shared_ptr< SlashingManager > slashing_manager, const addr_t &node_addr, const std::string &log_channel_name)
 
virtual ~ExtVotesPacketHandler ()=default
 
 ExtVotesPacketHandler (const ExtVotesPacketHandler &)=delete
 
 ExtVotesPacketHandler (ExtVotesPacketHandler &&)=delete
 
ExtVotesPacketHandleroperator= (const ExtVotesPacketHandler &)=delete
 
ExtVotesPacketHandleroperator= (ExtVotesPacketHandler &&)=delete
 
bool processVote (const std::shared_ptr< PbftVote > &vote, const std::shared_ptr< PbftBlock > &pbft_block, const std::shared_ptr< TaraxaPeer > &peer, bool validate_max_round_step)
 Process vote. More...
 
bool isPbftRelevantVote (const std::shared_ptr< PbftVote > &vote) const
 Checks is vote is relevant for current pbft state in terms of period, round and type. More...
 
virtual void sendPbftVotesBundle (const std::shared_ptr< TaraxaPeer > &peer, std::vector< std::shared_ptr< PbftVote >> &&votes)
 
- 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)
 

Protected Attributes

std::chrono::system_clock::time_point last_votes_sync_request_time_
 
std::chrono::system_clock::time_point last_pbft_block_sync_request_time_
 
std::shared_ptr< PbftManagerpbft_mgr_
 
std::shared_ptr< PbftChainpbft_chain_
 
std::shared_ptr< VoteManagervote_mgr_
 
std::shared_ptr< SlashingManagerslashing_manager_
 
- Protected Attributes inherited from taraxa::network::tarcap::PacketHandler
const FullNodeConfigkConf
 
std::shared_ptr< PeersStatepeers_state_ {nullptr}
 
std::shared_ptr< TimePeriodPacketsStatspackets_stats_
 

Static Protected Attributes

constexpr static size_t kMaxVotesInBundleRlp {1000}
 
constexpr static std::chrono::seconds kSyncRequestInterval = std::chrono::seconds(10)
 

Private Member Functions

std::pair< bool, std::string > validateVotePeriodRoundStep (const std::shared_ptr< PbftVote > &vote, const std::shared_ptr< TaraxaPeer > &peer, bool validate_max_round_step)
 Validates vote period, round and step against max values from config. More...
 
bool validateVoteAndBlock (const std::shared_ptr< PbftVote > &vote, const std::shared_ptr< PbftBlock > &pbft_block) const
 Validates provided vote if voted value == provided block. More...
 

Additional Inherited Members

- 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)
 

Detailed Description

ExtVotesPacketHandler is extended abstract PacketHandler with added functions that are used in packet handlers that process pbft votes.

Constructor & Destructor Documentation

◆ ExtVotesPacketHandler() [1/3]

taraxa::network::tarcap::ExtVotesPacketHandler::ExtVotesPacketHandler ( const FullNodeConfig conf,
std::shared_ptr< PeersState peers_state,
std::shared_ptr< TimePeriodPacketsStats packets_stats,
std::shared_ptr< PbftManager pbft_mgr,
std::shared_ptr< PbftChain pbft_chain,
std::shared_ptr< VoteManager vote_mgr,
std::shared_ptr< SlashingManager slashing_manager,
const addr_t node_addr,
const std::string &  log_channel_name 
)

◆ ~ExtVotesPacketHandler()

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

◆ ExtVotesPacketHandler() [2/3]

taraxa::network::tarcap::ExtVotesPacketHandler::ExtVotesPacketHandler ( const ExtVotesPacketHandler )
delete

◆ ExtVotesPacketHandler() [3/3]

taraxa::network::tarcap::ExtVotesPacketHandler::ExtVotesPacketHandler ( ExtVotesPacketHandler &&  )
delete

Member Function Documentation

◆ isPbftRelevantVote()

bool taraxa::network::tarcap::ExtVotesPacketHandler::isPbftRelevantVote ( const std::shared_ptr< PbftVote > &  vote) const

Checks is vote is relevant for current pbft state in terms of period, round and type.

Parameters
vote
Returns
true if vote is relevant for current pbft state, otherwise false

◆ operator=() [1/2]

ExtVotesPacketHandler& taraxa::network::tarcap::ExtVotesPacketHandler::operator= ( const ExtVotesPacketHandler )
delete

◆ operator=() [2/2]

ExtVotesPacketHandler& taraxa::network::tarcap::ExtVotesPacketHandler::operator= ( ExtVotesPacketHandler &&  )
delete

◆ processVote()

bool taraxa::network::tarcap::ExtVotesPacketHandler::processVote ( const std::shared_ptr< PbftVote > &  vote,
const std::shared_ptr< PbftBlock > &  pbft_block,
const std::shared_ptr< TaraxaPeer > &  peer,
bool  validate_max_round_step 
)

Process vote.

Parameters
vote
pbft_block
peer
validate_max_round_step
Returns
if vote was successfully processed, otherwise false

◆ sendPbftVotesBundle()

void taraxa::network::tarcap::ExtVotesPacketHandler::sendPbftVotesBundle ( const std::shared_ptr< TaraxaPeer > &  peer,
std::vector< std::shared_ptr< PbftVote >> &&  votes 
)
virtual

◆ validateVoteAndBlock()

bool taraxa::network::tarcap::ExtVotesPacketHandler::validateVoteAndBlock ( const std::shared_ptr< PbftVote > &  vote,
const std::shared_ptr< PbftBlock > &  pbft_block 
) const
private

Validates provided vote if voted value == provided block.

Parameters
vote
pbft_block
Returns
true if validation successful, otherwise false

◆ validateVotePeriodRoundStep()

std::pair< bool, std::string > taraxa::network::tarcap::ExtVotesPacketHandler::validateVotePeriodRoundStep ( const std::shared_ptr< PbftVote > &  vote,
const std::shared_ptr< TaraxaPeer > &  peer,
bool  validate_max_round_step 
)
private

Validates vote period, round and step against max values from config.

Parameters
voteto be validated
peer
validate_max_round_stepvalidate also max round and step
Returns
<true, ""> vote validation passed, otherwise <false, "err msg">

Member Data Documentation

◆ kMaxVotesInBundleRlp

constexpr static size_t taraxa::network::tarcap::ExtVotesPacketHandler::kMaxVotesInBundleRlp {1000}
staticconstexprprotected

◆ kSyncRequestInterval

constexpr static std::chrono::seconds taraxa::network::tarcap::ExtVotesPacketHandler::kSyncRequestInterval = std::chrono::seconds(10)
staticconstexprprotected

◆ last_pbft_block_sync_request_time_

std::chrono::system_clock::time_point taraxa::network::tarcap::ExtVotesPacketHandler::last_pbft_block_sync_request_time_
mutableprotected

◆ last_votes_sync_request_time_

std::chrono::system_clock::time_point taraxa::network::tarcap::ExtVotesPacketHandler::last_votes_sync_request_time_
mutableprotected

◆ pbft_chain_

std::shared_ptr<PbftChain> taraxa::network::tarcap::ExtVotesPacketHandler::pbft_chain_
protected

◆ pbft_mgr_

std::shared_ptr<PbftManager> taraxa::network::tarcap::ExtVotesPacketHandler::pbft_mgr_
protected

◆ slashing_manager_

std::shared_ptr<SlashingManager> taraxa::network::tarcap::ExtVotesPacketHandler::slashing_manager_
protected

◆ vote_mgr_

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

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