4#include <jsonrpccpp/server/abstractserverconnector.h>
7#include <boost/asio/strand.hpp>
8#include <boost/beast/core.hpp>
9#include <boost/beast/websocket.hpp>
19namespace beast = boost::beast;
20namespace websocket = beast::websocket;
21using tcp = boost::asio::ip::tcp;
26class WsSession :
public std::enable_shared_from_this<WsSession> {
29 explicit WsSession(tcp::socket&& socket,
addr_t node_addr, std::shared_ptr<WsServer> ws_server)
39 void close(
bool normal =
true);
55 static bool is_normal(
const beast::error_code& ec);
59 void on_read(beast::error_code ec, std::size_t bytes_transferred);
60 void write(std::string&& message);
64 void do_write(std::string&& message);
66 websocket::stream<beast::tcp_stream>
ws_;
Definition FixedHash.h:35
Definition subscriptions.hpp:107
Definition ws_session.hpp:26
void on_read(beast::error_code ec, std::size_t bytes_transferred)
Definition ws_server.cpp:68
void newPendingTransaction(const Json::Value &payload)
Definition ws_server.cpp:184
virtual std::string processRequest(const std::string_view &request)=0
beast::flat_buffer read_buffer_
Definition ws_session.hpp:73
std::atomic< int > subscription_id_
Definition ws_session.hpp:67
void on_close(beast::error_code ec)
Definition ws_server.cpp:153
websocket::stream< beast::tcp_stream > ws_
Definition ws_session.hpp:66
std::string ip_
Definition ws_session.hpp:75
bool is_closed() const
Definition ws_server.cpp:165
void newDagBlockFinalized(const Json::Value &payload)
Definition ws_server.cpp:172
std::atomic< bool > closed_
Definition ws_session.hpp:74
void do_read()
Definition ws_server.cpp:63
Subscriptions subscriptions_
Definition ws_session.hpp:69
void newLogs(const final_chain::BlockHeader &header, TransactionHashes trx_hashes, const TransactionReceipts &receipts)
Definition ws_server.cpp:188
void write(std::string &&message)
Definition ws_server.cpp:133
void close(bool normal=true)
Definition ws_server.cpp:145
void newPbftBlockExecuted(const Json::Value &payload)
Definition ws_server.cpp:176
boost::asio::strand< boost::asio::any_io_executor > write_strand_
Definition ws_session.hpp:72
void newEthBlock(const Json::Value &payload)
Definition ws_server.cpp:167
void newPillarBlockData(const Json::Value &payload)
Definition ws_server.cpp:180
std::weak_ptr< WsServer > ws_server_
Definition ws_session.hpp:68
void on_accept(beast::error_code ec)
Definition ws_server.cpp:51
void newDagBlock(const Json::Value &blk)
Definition ws_server.cpp:168
void run()
Definition ws_server.cpp:15
static bool is_normal(const beast::error_code &ec)
Definition ws_server.cpp:161
void handleRequest()
Definition ws_server.cpp:85
void do_write(std::string &&message)
Definition ws_server.cpp:115
WsSession(tcp::socket &&socket, addr_t node_addr, std::shared_ptr< WsServer > ws_server)
Definition ws_session.hpp:29
#define LOG_OBJECTS_DEFINE
Definition logger.hpp:60
#define LOG_OBJECTS_CREATE(channel)
Definition logger.hpp:68
std::hash for asio::adress
Definition FixedHash.h:483
Definition http_processor.hpp:11
std::vector< TransactionReceipt > TransactionReceipts
Definition receipt.hpp:35
std::vector< trx_hash_t > TransactionHashes
Definition transaction.hpp:87
boost::asio::ip::tcp tcp
Definition ws_session.hpp:21