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, std::shared_ptr<metrics::JsonRpcMetrics> metrics);
17 virtual ~WsServer();
18
19 WsServer(const WsServer&) = delete;
20 WsServer(WsServer&&) = delete;
21 WsServer& operator=(const WsServer&) = delete;
23
24 // Start accepting incoming connections
25 void run();
26 void newEthBlock(const ::taraxa::final_chain::BlockHeader& payload, const TransactionHashes& trx_hashes);
27 void newLogs(const ::taraxa::final_chain::BlockHeader& payload, TransactionHashes trx_hashes,
28 const TransactionReceipts& receipts);
29 void newDagBlock(const std::shared_ptr<DagBlock>& blk);
30 void newDagBlockFinalized(const blk_hash_t& blk, uint64_t period);
31 void newPbftBlockExecuted(const PbftBlock& blk, const std::vector<blk_hash_t>& finalized_dag_blk_hashes);
32 void newPendingTransaction(const trx_hash_t& trx_hash);
33 void newPillarBlockData(const pillar_chain::PillarBlockData& pillar_block_data);
34 uint32_t numberOfSessions();
35
36 virtual std::shared_ptr<WsSession> createSession(tcp::socket&& socket) = 0;
37
38 virtual bool StartListening() { return true; }
39 virtual bool StopListening() { return true; }
40
41 private:
42 void do_accept();
43 void on_accept(beast::error_code ec, tcp::socket socket);
44 boost::asio::io_context& ioc_;
45 tcp::acceptor acceptor_;
46 std::list<std::shared_ptr<WsSession>> sessions_;
47 std::atomic<bool> stopped_ = false;
48 boost::shared_mutex sessions_mtx_;
50
51 protected:
52 std::shared_ptr<metrics::JsonRpcMetrics> metrics_;
53 friend WsSession;
54};
55
56} // namespace taraxa::net
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
logger::Logger logger_
Definition ws_server.hpp:49
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
virtual bool StopListening()
Definition ws_server.hpp:39
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:48
virtual bool StartListening()
Definition ws_server.hpp:38
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:52
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:53
tcp::acceptor acceptor_
Definition ws_server.hpp:45
boost::asio::io_context & ioc_
Definition ws_server.hpp:44
std::atomic< bool > stopped_
Definition ws_server.hpp:47
std::list< std::shared_ptr< WsSession > > sessions_
Definition ws_server.hpp:46
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
std::shared_ptr< spdlog::logger > Logger
Definition logging.hpp:12
Definition http_processor.hpp:11
std::vector< TransactionReceipt > TransactionReceipts
Definition receipt.hpp:35
std::vector< trx_hash_t > TransactionHashes
Definition transaction.hpp:87