rippled
Loading...
Searching...
No Matches
SSLWSPeer.h
1#pragma once
2
3#include <xrpl/server/WSSession.h>
4#include <xrpl/server/detail/BaseHTTPPeer.h>
5
6#include <boost/asio/ip/tcp.hpp>
7#include <boost/asio/ssl/context.hpp>
8#include <boost/asio/ssl/stream.hpp>
9#include <boost/beast/core/tcp_stream.hpp>
10#include <boost/beast/ssl/ssl_stream.hpp>
11#include <boost/beast/websocket/ssl.hpp>
12
13#include <memory>
14
15namespace xrpl {
16
17template <class Handler>
18class SSLWSPeer : public BaseWSPeer<Handler, SSLWSPeer<Handler>>,
19 public std::enable_shared_from_this<SSLWSPeer<Handler>>
20{
21 friend class BasePeer<Handler, SSLWSPeer>;
22 friend class BaseWSPeer<Handler, SSLWSPeer>;
23
25 using error_code = boost::system::error_code;
26 using endpoint_type = boost::asio::ip::tcp::endpoint;
27 using socket_type = boost::beast::tcp_stream;
28 using stream_type = boost::beast::ssl_stream<socket_type>;
29 using waitable_timer = boost::asio::basic_waitable_timer<clock_type>;
30
32 boost::beast::websocket::stream<stream_type&> ws_;
33
34public:
35 template <class Body, class Headers>
37 Port const& port,
38 Handler& handler,
40 boost::beast::http::request<Body, Headers>&& request,
42 beast::Journal journal);
43};
44
45//------------------------------------------------------------------------------
46
47template <class Handler>
48template <class Body, class Headers>
50 Port const& port,
51 Handler& handler,
52 endpoint_type remote_endpoint,
53 boost::beast::http::request<Body, Headers>&& request,
55 beast::Journal journal)
56 : BaseWSPeer<Handler, SSLWSPeer>(
57 port,
58 handler,
59 stream_ptr->get_executor(),
60 waitable_timer{stream_ptr->get_executor()},
61 remote_endpoint,
62 std::move(request),
63 journal)
64 , stream_ptr_(std::move(stream_ptr))
65 , ws_(*stream_ptr_)
66{
67}
68
69} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:40
Represents an active WebSocket connection.
Definition BaseWSPeer.h:26
boost::asio::ip::tcp::endpoint const & remote_endpoint() const override
Definition BaseWSPeer.h:84
http_request_type const & request() const override
Definition BaseWSPeer.h:78
boost::beast::websocket::stream< stream_type & > ws_
Definition SSLWSPeer.h:32
std::unique_ptr< stream_type > stream_ptr_
Definition SSLWSPeer.h:31
boost::asio::ip::tcp::endpoint endpoint_type
Definition SSLWSPeer.h:26
boost::system::error_code error_code
Definition SSLWSPeer.h:25
SSLWSPeer(Port const &port, Handler &handler, endpoint_type remote_endpoint, boost::beast::http::request< Body, Headers > &&request, std::unique_ptr< stream_type > &&stream_ptr, beast::Journal journal)
Definition SSLWSPeer.h:49
boost::beast::ssl_stream< socket_type > stream_type
Definition SSLWSPeer.h:28
boost::asio::basic_waitable_timer< clock_type > waitable_timer
Definition SSLWSPeer.h:29
boost::beast::tcp_stream socket_type
Definition SSLWSPeer.h:27
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:30