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 ErrorCode = boost::system::error_code;
24 using EndpointType = boost::asio::ip::tcp::endpoint;
25 using WaitableTimer = boost::asio::basic_waitable_timer<ClockType>;
26 using SocketType = boost::beast::tcp_stream;
27
28 boost::beast::websocket::stream<SocketType> ws_;
29
30public:
31 template <class Body, class Headers>
33 Port const& port,
34 Handler& handler,
35 EndpointType remoteAddress,
36 boost::beast::http::request<Body, Headers>&& request,
37 SocketType&& 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 EndpointType remoteAddress,
49 boost::beast::http::request<Body, Headers>&& request,
50 SocketType&& socket,
51 beast::Journal journal)
52 : BaseWSPeer<Handler, PlainWSPeer>(
53 port,
54 handler,
55 socket.get_executor(),
56 WaitableTimer{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
HttpRequestType const & request() const override
Definition BaseWSPeer.h:93
BaseWSPeer(Port const &port, Handler &handler, boost::asio::executor const &executor, WaitableTimer timer, EndpointType remoteAddress, boost::beast::http::request< Body, Headers > &&request, beast::Journal journal)
Definition BaseWSPeer.h:168
boost::beast::tcp_stream SocketType
Definition PlainWSPeer.h:26
boost::asio::basic_waitable_timer< ClockType > WaitableTimer
Definition PlainWSPeer.h:25
boost::system::error_code ErrorCode
Definition PlainWSPeer.h:23
PlainWSPeer(Port const &port, Handler &handler, EndpointType remoteAddress, boost::beast::http::request< Body, Headers > &&request, SocketType &&socket, beast::Journal journal)
Definition PlainWSPeer.h:45
boost::asio::ip::tcp::endpoint EndpointType
Definition PlainWSPeer.h:24
boost::beast::websocket::stream< SocketType > ws_
Definition PlainWSPeer.h:28
std::chrono::system_clock ClockType
Definition PlainWSPeer.h:22
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