xrpld
Loading...
Searching...
No Matches
PlainWSPeer.h
1#pragma once
2
3#include <xrpl/beast/utility/Journal.h>
4#include <xrpl/server/Port.h>
5#include <xrpl/server/detail/BaseWSPeer.h>
6
7#include <boost/beast/core/tcp_stream.hpp>
8
9#include <chrono>
10#include <memory>
11#include <utility>
12
13namespace xrpl {
14
15template <class Handler>
16class PlainWSPeer : public BaseWSPeer<Handler, PlainWSPeer<Handler>>,
17 public std::enable_shared_from_this<PlainWSPeer<Handler>>
18{
19 friend class BasePeer<Handler, PlainWSPeer>;
20 friend class BaseWSPeer<Handler, PlainWSPeer>;
21
23 using error_code = boost::system::error_code;
24 using endpoint_type = boost::asio::ip::tcp::endpoint;
25 using waitable_timer = boost::asio::basic_waitable_timer<clock_type>;
26 using socket_type = boost::beast::tcp_stream;
27
28 boost::beast::websocket::stream<socket_type> ws_;
29
30public:
31 template <class Body, class Headers>
33 Port const& port,
34 Handler& handler,
35 endpoint_type remoteAddress,
36 boost::beast::http::request<Body, Headers>&& request,
37 socket_type&& socket,
38 beast::Journal journal);
39};
40
41//------------------------------------------------------------------------------
42
43template <class Handler>
44template <class Body, class Headers>
46 Port const& port,
47 Handler& handler,
48 endpoint_type remoteAddress,
49 boost::beast::http::request<Body, Headers>&& request,
50 socket_type&& socket,
51 beast::Journal journal)
52 : BaseWSPeer<Handler, PlainWSPeer>(
53 port,
54 handler,
55 socket.get_executor(),
56 waitable_timer{socket.get_executor()},
57 remoteAddress,
58 std::move(request),
59 journal)
60 , ws_(std::move(socket))
61{
62}
63
64} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:44
BaseWSPeer(Port const &port, Handler &handler, boost::asio::executor const &executor, waitable_timer timer, endpoint_type remoteAddress, boost::beast::http::request< Body, Headers > &&request, beast::Journal journal)
Definition BaseWSPeer.h:168
http_request_type const & request() const override
Definition BaseWSPeer.h:93
std::chrono::system_clock clock_type
Definition PlainWSPeer.h:22
boost::beast::websocket::stream< socket_type > ws_
Definition PlainWSPeer.h:28
PlainWSPeer(Port const &port, Handler &handler, endpoint_type remoteAddress, boost::beast::http::request< Body, Headers > &&request, socket_type &&socket, beast::Journal journal)
Definition PlainWSPeer.h:45
boost::beast::tcp_stream socket_type
Definition PlainWSPeer.h:26
boost::asio::ip::tcp::endpoint endpoint_type
Definition PlainWSPeer.h:24
boost::system::error_code error_code
Definition PlainWSPeer.h:23
boost::asio::basic_waitable_timer< clock_type > waitable_timer
Definition PlainWSPeer.h:25
STL namespace.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Configuration information for a Server listening port.
Definition Port.h:29