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, std::shared_ptr<WsServer> ws_server)
33 logger_(logger::Logging::get().CreateChannelLogger(
"WS_SESSION")),
38 void close(
bool normal =
true);
53 static bool is_normal(
const beast::error_code& ec);
57 void on_read(beast::error_code ec, std::size_t bytes_transferred);
58 void write(std::string&& message);
62 void do_write(std::string&& message);
64 websocket::stream<beast::tcp_stream>
ws_;
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:69
void newPendingTransaction(const Json::Value &payload)
Definition ws_server.cpp:185
virtual std::string processRequest(const std::string_view &request)=0
beast::flat_buffer read_buffer_
Definition ws_session.hpp:72
std::atomic< int > subscription_id_
Definition ws_session.hpp:65
void on_close(beast::error_code ec)
Definition ws_server.cpp:154
websocket::stream< beast::tcp_stream > ws_
Definition ws_session.hpp:64
std::string ip_
Definition ws_session.hpp:74
bool is_closed() const
Definition ws_server.cpp:166
void newDagBlockFinalized(const Json::Value &payload)
Definition ws_server.cpp:173
std::atomic< bool > closed_
Definition ws_session.hpp:73
void do_read()
Definition ws_server.cpp:64
Subscriptions subscriptions_
Definition ws_session.hpp:67
void newLogs(const final_chain::BlockHeader &header, TransactionHashes trx_hashes, const TransactionReceipts &receipts)
Definition ws_server.cpp:189
void write(std::string &&message)
Definition ws_server.cpp:134
void close(bool normal=true)
Definition ws_server.cpp:146
logger::Logger logger_
Definition ws_session.hpp:68
void newPbftBlockExecuted(const Json::Value &payload)
Definition ws_server.cpp:177
boost::asio::strand< boost::asio::any_io_executor > write_strand_
Definition ws_session.hpp:71
void newEthBlock(const Json::Value &payload)
Definition ws_server.cpp:168
void newPillarBlockData(const Json::Value &payload)
Definition ws_server.cpp:181
std::weak_ptr< WsServer > ws_server_
Definition ws_session.hpp:66
WsSession(tcp::socket &&socket, std::shared_ptr< WsServer > ws_server)
Definition ws_session.hpp:29
void on_accept(beast::error_code ec)
Definition ws_server.cpp:52
void newDagBlock(const Json::Value &blk)
Definition ws_server.cpp:169
void run()
Definition ws_server.cpp:16
static bool is_normal(const beast::error_code &ec)
Definition ws_server.cpp:162
void handleRequest()
Definition ws_server.cpp:86
void do_write(std::string &&message)
Definition ws_server.cpp:116
std::hash for asio::adress
Definition FixedHash.h:483
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
boost::asio::ip::tcp tcp
Definition ws_session.hpp:21