TARAXA
Loading...
Searching...
No Matches
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 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.
 
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.
 
void requestPbftNextVotesAtPeriodRound (const dev::p2p::NodeID &peerID, PbftPeriod pbft_period, PbftRound pbft_round)
 
- 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 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) override
 Packet processing function wrapper that logs packet stats and calls process function.
 
- Public Member Functions inherited from taraxa::network::tarcap::BasePacketHandler
 BasePacketHandler ()=default
 
virtual ~BasePacketHandler ()=default
 
 BasePacketHandler (const BasePacketHandler &)=default
 
 BasePacketHandler (BasePacketHandler &&)=default
 
BasePacketHandleroperator= (const BasePacketHandler &)=default
 
BasePacketHandleroperator= (BasePacketHandler &&)=default
 

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_
 
logger::Logger logger_
 

Static Protected Attributes

static constexpr size_t kMaxVotesInBundleRlp {1000}
 
static constexpr 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.
 
bool validateVoteAndBlock (const std::shared_ptr< PbftVote > &vote, const std::shared_ptr< PbftBlock > &pbft_block) const
 Validates provided vote if voted value == provided block.
 

Additional Inherited Members

- Protected Member Functions inherited from taraxa::network::tarcap::PacketHandler
bool sealAndSend (const dev::p2p::NodeID &node_id, SubprotocolPacketType packet_type, dev::bytes &&rlp_bytes)
 
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 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

◆ requestPbftNextVotesAtPeriodRound()

void taraxa::network::tarcap::ExtVotesPacketHandler::requestPbftNextVotesAtPeriodRound ( const dev::p2p::NodeID peerID,
PbftPeriod  pbft_period,
PbftRound  pbft_round 
)

◆ 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 size_t taraxa::network::tarcap::ExtVotesPacketHandler::kMaxVotesInBundleRlp {1000}
staticconstexprprotected

◆ kSyncRequestInterval

constexpr 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: