xrpld
Loading...
Searching...
No Matches
Session.h
1#pragma once
2
3#include <xrpl/beast/net/IPEndpoint.h>
4#include <xrpl/beast/utility/Journal.h>
5#include <xrpl/server/Handoff.h>
6#include <xrpl/server/Port.h>
7#include <xrpl/server/WSSession.h>
8#include <xrpl/server/Writer.h>
9
10#include <boost/beast/http/message.hpp>
11
12#include <cstddef>
13#include <memory>
14#include <string_view>
15
16namespace xrpl {
17
25{
26public:
27 Session() = default;
28 Session(Session const&) = delete;
29 Session&
30 operator=(Session const&) = delete;
31 virtual ~Session() = default;
32
38 void* tag = nullptr;
39
43 virtual beast::Journal
44 journal() = 0;
45
49 virtual Port const&
50 port() = 0;
51
57
61 virtual http_request_type&
62 request() = 0;
63
68 void
70 {
71 if (!s.empty())
72 write(s.data(), s.size());
73 }
74
75 template <typename BufferSequence>
76 void
77 write(BufferSequence const& buffers)
78 {
79 for (typename BufferSequence::const_iterator iter(buffers.begin()); iter != buffers.end();
80 ++iter)
81 {
82 typename BufferSequence::value_type const& buffer(*iter);
83 write(buffer.data(), boost::asio::buffer_size(buffer));
84 }
85 }
86
87 virtual void
88 write(void const* buffer, std::size_t bytes) = 0;
89
90 virtual void
91 write(std::shared_ptr<Writer> const& writer, bool keepAlive) = 0;
92
94
102 detach() = 0;
103
111 virtual void
112 complete() = 0;
113
120 virtual void
121 close(bool graceful) = 0;
122
128};
129
130} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:44
A version-independent IP address and port combination.
Definition IPEndpoint.h:24
virtual void write(std::shared_ptr< Writer > const &writer, bool keepAlive)=0
virtual beast::Journal journal()=0
Returns the Journal to use for logging.
Session(Session const &)=delete
virtual Port const & port()=0
Returns the Port settings for this connection.
virtual beast::ip::Endpoint remoteAddress()=0
Returns the remote address of the connection.
virtual void write(void const *buffer, std::size_t bytes)=0
virtual void close(bool graceful)=0
Close the session.
virtual std::shared_ptr< Session > detach()=0
Detach the session.
void write(BufferSequence const &buffers)
Definition Session.h:77
void write(std::string_view s)
Send a copy of data asynchronously.
Definition Session.h:69
Session()=default
virtual void complete()=0
Indicate that the response is complete.
virtual http_request_type & request()=0
Returns the current HTTP request.
virtual ~Session()=default
Session & operator=(Session const &)=delete
virtual std::shared_ptr< WSSession > websocketUpgrade()=0
Convert the connection to WebSocket.
void * tag
A user-definable pointer.
Definition Session.h:38
T data(T... args)
T empty(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
boost::beast::http::request< boost::beast::http::dynamic_body > http_request_type
Definition Handoff.h:12
T size(T... args)
Configuration information for a Server listening port.
Definition Port.h:29