rippled
Loading...
Searching...
No Matches
SSLWSPeer.h
1#ifndef XRPL_SERVER_SSLWSPEER_H_INCLUDED
2#define XRPL_SERVER_SSLWSPEER_H_INCLUDED
3
4#include <xrpl/server/WSSession.h>
5#include <xrpl/server/detail/BaseHTTPPeer.h>
6
7#include <boost/asio/ip/tcp.hpp>
8#include <boost/asio/ssl/context.hpp>
9#include <boost/asio/ssl/stream.hpp>
10#include <boost/beast/core/tcp_stream.hpp>
11#include <boost/beast/ssl/ssl_stream.hpp>
12#include <boost/beast/websocket/ssl.hpp>
13
14#include <memory>
15
16namespace ripple {
17
18template <class Handler>
19class SSLWSPeer : public BaseWSPeer<Handler, SSLWSPeer<Handler>>,
20 public std::enable_shared_from_this<SSLWSPeer<Handler>>
21{
22 friend class BasePeer<Handler, SSLWSPeer>;
23 friend class BaseWSPeer<Handler, SSLWSPeer>;
24
26 using error_code = boost::system::error_code;
27 using endpoint_type = boost::asio::ip::tcp::endpoint;
28 using socket_type = boost::beast::tcp_stream;
29 using stream_type = boost::beast::ssl_stream<socket_type>;
30 using waitable_timer = boost::asio::basic_waitable_timer<clock_type>;
31
33 boost::beast::websocket::stream<stream_type&> ws_;
34
35public:
36 template <class Body, class Headers>
38 Port const& port,
39 Handler& handler,
41 boost::beast::http::request<Body, Headers>&& request,
43 beast::Journal journal);
44};
45
46//------------------------------------------------------------------------------
47
48template <class Handler>
49template <class Body, class Headers>
51 Port const& port,
52 Handler& handler,
53 endpoint_type remote_endpoint,
54 boost::beast::http::request<Body, Headers>&& request,
56 beast::Journal journal)
57 : BaseWSPeer<Handler, SSLWSPeer>(
58 port,
59 handler,
60 stream_ptr->get_executor(),
61 waitable_timer{stream_ptr->get_executor()},
62 remote_endpoint,
63 std::move(request),
64 journal)
65 , stream_ptr_(std::move(stream_ptr))
66 , ws_(*stream_ptr_)
67{
68}
69
70} // namespace ripple
71
72#endif
A generic endpoint for log messages.
Definition Journal.h:41
Represents an active WebSocket connection.
Definition BaseWSPeer.h:27
http_request_type const & request() const override
Definition BaseWSPeer.h:81
boost::asio::ip::tcp::endpoint const & remote_endpoint() const override
Definition BaseWSPeer.h:87
boost::beast::websocket::stream< stream_type & > ws_
Definition SSLWSPeer.h:33
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:50
boost::beast::ssl_stream< socket_type > stream_type
Definition SSLWSPeer.h:29
std::unique_ptr< stream_type > stream_ptr_
Definition SSLWSPeer.h:32
boost::beast::tcp_stream socket_type
Definition SSLWSPeer.h:28
boost::asio::ip::tcp::endpoint endpoint_type
Definition SSLWSPeer.h:27
boost::system::error_code error_code
Definition SSLWSPeer.h:26
boost::asio::basic_waitable_timer< clock_type > waitable_timer
Definition SSLWSPeer.h:30
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
STL namespace.
Configuration information for a Server listening port.
Definition Port.h:31