TARAXA
pbft_sync_packet_handler.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 #include "common/thread_pool.hpp"
6 
7 namespace taraxa::network::tarcap {
8 
10  public:
11  PbftSyncPacketHandler(const FullNodeConfig& conf, std::shared_ptr<PeersState> peers_state,
12  std::shared_ptr<TimePeriodPacketsStats> packets_stats,
13  std::shared_ptr<PbftSyncingState> pbft_syncing_state, std::shared_ptr<PbftChain> pbft_chain,
14  std::shared_ptr<PbftManager> pbft_mgr, std::shared_ptr<DagManager> dag_mgr,
15  std::shared_ptr<VoteManager> vote_mgr, std::shared_ptr<DbStorage> db, const addr_t& node_addr,
16  const std::string& logs_prefix = "PBFT_SYNC_PH");
17 
19 
20  // Packet type that is processed by this handler
22 
23  private:
24  virtual void validatePacketRlpFormat(const threadpool::PacketData& packet_data) const override;
25  virtual void process(const threadpool::PacketData& packet_data, const std::shared_ptr<TaraxaPeer>& peer) override;
26 
27  protected:
28  virtual PeriodData decodePeriodData(const dev::RLP& period_data_rlp) const;
29  virtual std::vector<std::shared_ptr<PbftVote>> decodeVotesBundle(const dev::RLP& votes_bundle_rlp) const;
30 
31  void pbftSyncComplete();
32  void delayedPbftSync(int counter);
33 
34  static constexpr uint32_t kDelayedPbftSyncDelayMs = 10;
35 
36  std::shared_ptr<VoteManager> vote_mgr_;
38 
39  static constexpr size_t kStandardPacketSize = 2;
40  static constexpr size_t kChainSyncedPacketSize = 3;
41 };
42 
43 } // namespace taraxa::network::tarcap
Definition: FixedHash.h:35
Definition: RLP.h:56
ExtSyncingPacketHandler is extended abstract PacketHandler with added functions that are used in pack...
Definition: ext_syncing_packet_handler.hpp:21
Definition: pbft_sync_packet_handler.hpp:9
static constexpr size_t kChainSyncedPacketSize
Definition: pbft_sync_packet_handler.hpp:40
util::ThreadPool periodic_events_tp_
Definition: pbft_sync_packet_handler.hpp:37
void handleMaliciousSyncPeer(const dev::p2p::NodeID &id)
Definition: pbft_sync_packet_handler.cpp:285
virtual std::vector< std::shared_ptr< PbftVote > > decodeVotesBundle(const dev::RLP &votes_bundle_rlp) const
Definition: pbft_sync_packet_handler.cpp:237
static constexpr uint32_t kDelayedPbftSyncDelayMs
Definition: pbft_sync_packet_handler.hpp:34
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")
Definition: pbft_sync_packet_handler.cpp:12
static constexpr size_t kStandardPacketSize
Definition: pbft_sync_packet_handler.hpp:39
void delayedPbftSync(int counter)
Definition: pbft_sync_packet_handler.cpp:261
static constexpr SubprotocolPacketType kPacketType_
Definition: pbft_sync_packet_handler.hpp:21
std::shared_ptr< VoteManager > vote_mgr_
Definition: pbft_sync_packet_handler.hpp:36
virtual PeriodData decodePeriodData(const dev::RLP &period_data_rlp) const
Definition: pbft_sync_packet_handler.cpp:233
virtual void process(const threadpool::PacketData &packet_data, const std::shared_ptr< TaraxaPeer > &peer) override
Main packet processing function.
Definition: pbft_sync_packet_handler.cpp:39
void pbftSyncComplete()
Definition: pbft_sync_packet_handler.cpp:242
virtual void validatePacketRlpFormat(const threadpool::PacketData &packet_data) const override
Validates packet rlp format - items count.
Definition: pbft_sync_packet_handler.cpp:25
Definition: packet_data.hpp:12
Definition: thread_pool.hpp:9
PeriodData class is for block execution, that includes PBFT block, certify votes, DAG blocks,...
Definition: period_data.hpp:25
Definition: vote_manager.hpp:23
SubprotocolPacketType
SubprotocolPacketType is used in networking layer to differentiate packet types.
Definition: packet_types.hpp:12
@ PbftSyncPacket
Definition: packet_types.hpp:30
Definition: config.hpp:24