TARAXA
Loading...
Searching...
No Matches
ws_server.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
5#include "dag/dag_block.hpp"
9#include "pbft/pbft_chain.hpp"
12
13namespace taraxa::net {
14class WsServer : public std::enable_shared_from_this<WsServer>, public jsonrpc::AbstractServerConnector {
15 public:
16 WsServer(boost::asio::io_context& ioc, tcp::endpoint endpoint, addr_t node_addr,
17 std::shared_ptr<metrics::JsonRpcMetrics> metrics);
18 virtual ~WsServer();
19
20 WsServer(const WsServer&) = delete;
21 WsServer(WsServer&&) = delete;
22 WsServer& operator=(const WsServer&) = delete;
24
25 // Start accepting incoming connections
26 void run();
27 void newEthBlock(const ::taraxa::final_chain::BlockHeader& payload, const TransactionHashes& trx_hashes);
28 void newLogs(const ::taraxa::final_chain::BlockHeader& payload, TransactionHashes trx_hashes,
29 const TransactionReceipts& receipts);
30 void newDagBlock(const std::shared_ptr<DagBlock>& blk);
31 void newDagBlockFinalized(const blk_hash_t& blk, uint64_t period);
32 void newPbftBlockExecuted(const PbftBlock& blk, const std::vector<blk_hash_t>& finalized_dag_blk_hashes);
33 void newPendingTransaction(const trx_hash_t& trx_hash);
34 void newPillarBlockData(const pillar_chain::PillarBlockData& pillar_block_data);
35 uint32_t numberOfSessions();
36
37 virtual std::shared_ptr<WsSession> createSession(tcp::socket&& socket) = 0;
38
39 virtual bool StartListening() { return true; }
40 virtual bool StopListening() { return true; }
41
42 private:
43 void do_accept();
44 void on_accept(beast::error_code ec, tcp::socket socket);
46 boost::asio::io_context& ioc_;
47 tcp::acceptor acceptor_;
48 std::list<std::shared_ptr<WsSession>> sessions_;
49 std::atomic<bool> stopped_ = false;
50 boost::shared_mutex sessions_mtx_;
51
52 protected:
54 std::shared_ptr<metrics::JsonRpcMetrics> metrics_;
55 friend WsSession;
56};
57
58} // namespace taraxa::net
Definition FixedHash.h:35
Definition ws_server.hpp:14
void on_accept(beast::error_code ec, tcp::socket socket)
Definition ws_server.cpp:248
virtual ~WsServer()
Definition ws_server.cpp:232
WsServer & operator=(WsServer &&)=delete
void newEthBlock(const ::taraxa::final_chain::BlockHeader &payload, const TransactionHashes &trx_hashes)
Definition ws_server.cpp:274
void newDagBlockFinalized(const blk_hash_t &blk, uint64_t period)
Definition ws_server.cpp:310
const addr_t node_addr_
Definition ws_server.hpp:53
virtual bool StopListening()
Definition ws_server.hpp:40
void newLogs(const ::taraxa::final_chain::BlockHeader &payload, TransactionHashes trx_hashes, const TransactionReceipts &receipts)
Definition ws_server.cpp:288
boost::shared_mutex sessions_mtx_
Definition ws_server.hpp:50
virtual bool StartListening()
Definition ws_server.hpp:39
void newDagBlock(const std::shared_ptr< DagBlock > &blk)
Definition ws_server.cpp:300
WsServer & operator=(const WsServer &)=delete
uint32_t numberOfSessions()
Definition ws_server.cpp:356
WsServer(const WsServer &)=delete
void newPbftBlockExecuted(const PbftBlock &blk, const std::vector< blk_hash_t > &finalized_dag_blk_hashes)
Definition ws_server.cpp:323
std::shared_ptr< metrics::JsonRpcMetrics > metrics_
Definition ws_server.hpp:54
void newPillarBlockData(const pillar_chain::PillarBlockData &pillar_block_data)
Definition ws_server.cpp:345
void do_accept()
Definition ws_server.cpp:243
void newPendingTransaction(const trx_hash_t &trx_hash)
Definition ws_server.cpp:334
friend WsSession
Definition ws_server.hpp:55
LOG_OBJECTS_DEFINE boost::asio::io_context & ioc_
Definition ws_server.hpp:46
tcp::acceptor acceptor_
Definition ws_server.hpp:47
std::atomic< bool > stopped_
Definition ws_server.hpp:49
std::list< std::shared_ptr< WsSession > > sessions_
Definition ws_server.hpp:48
void run()
Definition ws_server.cpp:230
virtual std::shared_ptr< WsSession > createSession(tcp::socket &&socket)=0
WsServer(WsServer &&)=delete
The PbftBlock class is a PBFT block class that includes PBFT block hash, previous PBFT block hash,...
Definition pbft_block.hpp:22
Definition pillar_block.hpp:143
#define LOG_OBJECTS_DEFINE
Definition logger.hpp:60
Definition http_processor.hpp:11
std::vector< TransactionReceipt > TransactionReceipts
Definition receipt.hpp:35
std::vector< trx_hash_t > TransactionHashes
Definition transaction.hpp:87