xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
server
detail
SSLWSPeer.h
1
#pragma once
2
3
#include <xrpl/beast/utility/Journal.h>
4
#include <xrpl/server/Port.h>
5
#include <xrpl/server/detail/BaseHTTPPeer.h>
6
#include <xrpl/server/detail/BaseWSPeer.h>
7
8
#include <boost/asio/ip/tcp.hpp>
9
#include <boost/asio/ssl/context.hpp>
10
#include <boost/asio/ssl/stream.hpp>
11
#include <boost/beast/core/tcp_stream.hpp>
12
#include <boost/beast/ssl/ssl_stream.hpp>
13
#include <boost/beast/websocket/ssl.hpp>
14
#include <boost/beast/websocket/stream.hpp>
15
16
#include <
chrono
>
17
#include <
memory
>
18
#include <
utility
>
19
20
namespace
xrpl
{
21
22
template
<
class
Handler>
23
class
SSLWSPeer
:
public
BaseWSPeer
<Handler, SSLWSPeer<Handler>>,
24
public
std::enable_shared_from_this
<SSLWSPeer<Handler>>
25
{
26
friend
class
BasePeer
<Handler,
SSLWSPeer
>;
27
friend
class
BaseWSPeer
<Handler,
SSLWSPeer
>;
28
29
using
ClockType
=
std::chrono::system_clock
;
30
using
ErrorCode
= boost::system::error_code;
31
using
EndpointType
= boost::asio::ip::tcp::endpoint;
32
using
SocketType
= boost::beast::tcp_stream;
33
using
StreamType
= boost::beast::ssl_stream<SocketType>;
34
using
WaitableTimer
= boost::asio::basic_waitable_timer<ClockType>;
35
36
std::unique_ptr<StreamType>
streamPtr_
;
37
boost::beast::websocket::stream<StreamType&>
ws_
;
38
39
public
:
40
template
<
class
Body,
class
Headers>
41
SSLWSPeer
(
42
Port
const
&
port
,
43
Handler& handler,
44
EndpointType
remoteEndpoint
,
45
boost::beast::http::request<Body, Headers>&&
request
,
46
std::unique_ptr<StreamType>
&& streamPtr,
47
beast::Journal
journal);
48
};
49
50
//------------------------------------------------------------------------------
51
52
template
<
class
Handler>
53
template
<
class
Body,
class
Headers>
54
SSLWSPeer<Handler>::SSLWSPeer
(
55
Port
const
&
port
,
56
Handler& handler,
57
EndpointType
remoteEndpoint
,
58
boost::beast::http::request<Body, Headers>&&
request
,
59
std::unique_ptr<StreamType>
&& streamPtr,
60
beast::Journal
journal)
61
:
BaseWSPeer
<Handler,
SSLWSPeer
>(
62
port
,
63
handler,
64
streamPtr->get_executor(),
65
WaitableTimer
{streamPtr->get_executor()},
66
remoteEndpoint
,
67
std
::move(
request
),
68
journal)
69
,
streamPtr_
(
std
::move(streamPtr))
70
,
ws_
(*
streamPtr_
)
71
{
72
}
73
74
}
// namespace xrpl
chrono
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::BasePeer
Definition
BasePeer.h:21
xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::port
Port const & port() const override
Definition
BaseWSPeer.h:87
xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::request
HttpRequestType const & request() const override
Definition
BaseWSPeer.h:93
xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::remoteEndpoint
boost::asio::ip::tcp::endpoint const & remoteEndpoint() const override
Definition
BaseWSPeer.h:99
xrpl::BaseWSPeer< Handler, SSLWSPeer< Handler > >::BaseWSPeer
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
xrpl::SSLWSPeer::ws_
boost::beast::websocket::stream< StreamType & > ws_
Definition
SSLWSPeer.h:37
xrpl::SSLWSPeer::SSLWSPeer
SSLWSPeer(Port const &port, Handler &handler, EndpointType remoteEndpoint, boost::beast::http::request< Body, Headers > &&request, std::unique_ptr< StreamType > &&streamPtr, beast::Journal journal)
Definition
SSLWSPeer.h:54
xrpl::SSLWSPeer::SocketType
boost::beast::tcp_stream SocketType
Definition
SSLWSPeer.h:32
xrpl::SSLWSPeer::ErrorCode
boost::system::error_code ErrorCode
Definition
SSLWSPeer.h:30
xrpl::SSLWSPeer::WaitableTimer
boost::asio::basic_waitable_timer< ClockType > WaitableTimer
Definition
SSLWSPeer.h:34
xrpl::SSLWSPeer::StreamType
boost::beast::ssl_stream< SocketType > StreamType
Definition
SSLWSPeer.h:33
xrpl::SSLWSPeer::EndpointType
boost::asio::ip::tcp::endpoint EndpointType
Definition
SSLWSPeer.h:31
xrpl::SSLWSPeer::streamPtr_
std::unique_ptr< StreamType > streamPtr_
Definition
SSLWSPeer.h:36
xrpl::SSLWSPeer::ClockType
std::chrono::system_clock ClockType
Definition
SSLWSPeer.h:29
std::enable_shared_from_this
memory
std
STL namespace.
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::Port
Configuration information for a Server listening port.
Definition
Port.h:29
std::chrono::system_clock
std::unique_ptr
utility
Generated by
1.17.0