TARAXA
ext_syncing_packet_handler.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "dag/dag_manager.hpp"
4 #include "packet_handler.hpp"
5 
6 namespace taraxa {
7 class PbftChain;
8 class PbftManager;
9 class DagManager;
10 class DbStorage;
11 } // namespace taraxa
12 
13 namespace taraxa::network::tarcap {
14 
15 class PbftSyncingState;
16 
22  public:
23  ExtSyncingPacketHandler(const FullNodeConfig &conf, std::shared_ptr<PeersState> peers_state,
24  std::shared_ptr<TimePeriodPacketsStats> packets_stats,
25  std::shared_ptr<PbftSyncingState> pbft_syncing_state, std::shared_ptr<PbftChain> pbft_chain,
26  std::shared_ptr<PbftManager> pbft_mgr, std::shared_ptr<DagManager> dag_mgr,
27  std::shared_ptr<DbStorage> db, const addr_t &node_addr, const std::string &log_channel_name);
28 
29  virtual ~ExtSyncingPacketHandler() = default;
32 
37  void startSyncingPbft();
38 
46  bool syncPeerPbft(PbftPeriod request_period);
47 
48  void requestDagBlocks(const dev::p2p::NodeID &_nodeID, const std::unordered_set<blk_hash_t> &blocks,
49  PbftPeriod period);
50  void requestPendingDagBlocks(std::shared_ptr<TaraxaPeer> peer = nullptr);
51 
52  std::shared_ptr<TaraxaPeer> getMaxChainPeer(std::function<bool(const std::shared_ptr<TaraxaPeer> &)> filter_func =
53  [](const std::shared_ptr<TaraxaPeer> &) { return true; });
54 
55  protected:
56  std::shared_ptr<PbftSyncingState> pbft_syncing_state_{nullptr};
57 
58  std::shared_ptr<PbftChain> pbft_chain_{nullptr};
59  std::shared_ptr<PbftManager> pbft_mgr_{nullptr};
60  std::shared_ptr<DagManager> dag_mgr_{nullptr};
61  std::shared_ptr<DbStorage> db_{nullptr};
62 };
63 
64 } // namespace taraxa::network::tarcap
Definition: FixedHash.h:35
ExtSyncingPacketHandler is extended abstract PacketHandler with added functions that are used in pack...
Definition: ext_syncing_packet_handler.hpp:21
std::shared_ptr< DbStorage > db_
Definition: ext_syncing_packet_handler.hpp:61
ExtSyncingPacketHandler & operator=(const ExtSyncingPacketHandler &)=delete
void requestDagBlocks(const dev::p2p::NodeID &_nodeID, const std::unordered_set< blk_hash_t > &blocks, PbftPeriod period)
Definition: ext_syncing_packet_handler.cpp:158
std::shared_ptr< PbftSyncingState > pbft_syncing_state_
Definition: ext_syncing_packet_handler.hpp:56
std::shared_ptr< DagManager > dag_mgr_
Definition: ext_syncing_packet_handler.hpp:60
std::shared_ptr< TaraxaPeer > getMaxChainPeer(std::function< bool(const std::shared_ptr< TaraxaPeer > &)> filter_func=[](const std::shared_ptr< TaraxaPeer > &) { return true;})
Definition: ext_syncing_packet_handler.cpp:79
std::shared_ptr< PbftManager > pbft_mgr_
Definition: ext_syncing_packet_handler.hpp:59
std::shared_ptr< PbftChain > pbft_chain_
Definition: ext_syncing_packet_handler.hpp:58
void requestPendingDagBlocks(std::shared_ptr< TaraxaPeer > peer=nullptr)
Definition: ext_syncing_packet_handler.cpp:112
ExtSyncingPacketHandler & operator=(ExtSyncingPacketHandler &&)=delete
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)
Definition: ext_syncing_packet_handler.cpp:9
bool syncPeerPbft(PbftPeriod request_period)
Send sync request to the current syncing peer with specified request_period.
Definition: ext_syncing_packet_handler.cpp:61
void startSyncingPbft()
Start syncing pbft if needed.
Definition: ext_syncing_packet_handler.cpp:23
Packet handler base class that consists of shared state and some commonly used functions.
Definition: packet_handler.hpp:25
Definition: vote_manager.hpp:23
Definition: config.hpp:8
EthBlockNumber PbftPeriod
Definition: types.hpp:24
Definition: config.hpp:24