18#ifndef TRINITYCORE_BASE_HTTP_SOCKET_H
19#define TRINITYCORE_BASE_HTTP_SOCKET_H
28#include <boost/asio/buffers_iterator.hpp>
29#include <boost/beast/http/parser.hpp>
30#include <boost/beast/http/string_body.hpp>
31#include <boost/uuid/uuid_io.hpp>
49 static std::string SerializeRequest(
Request const& request);
61template<
typename Derived,
typename Stream>
67 template<
typename... Args>
68 explicit BaseSocket(boost::asio::ip::tcp::socket&& socket, Args&&... args)
69 :
Base(
std::move(socket),
std::forward<Args>(args)...) { }
#define TC_LOG_DEBUG(filterType__, message__,...)
std::optional< T > Optional
Optional helper class to wrap optional values within.
T & AddCallback(T &&query)
void ProcessReadyCallbacks()
size_type GetActiveSize() const
MessageBuffer & GetReadBuffer()
void DelayedCloseSocket()
Marks the socket for closing after write buffer becomes empty.
boost::asio::ip::address GetRemoteIpAddress() const
void QueuePacket(MessageBuffer &&buffer)
uint16 GetRemotePort() const
AbstractSocket(AbstractSocket &&other)=default
virtual std::string GetClientInfo() const =0
virtual void SendResponse(RequestContext &context)=0
static std::string SerializeRequest(Request const &request)
virtual ~AbstractSocket()=default
AbstractSocket & operator=(AbstractSocket &&other)=default
AbstractSocket(AbstractSocket const &other)=default
static MessageBuffer SerializeResponse(Request const &request, Response &response)
static bool ParseRequest(MessageBuffer &packet, RequestParser &parser)
virtual void QueueQuery(QueryCallback &&queryCallback)=0
virtual Optional< boost::uuids::uuid > GetSessionId() const =0
AbstractSocket & operator=(AbstractSocket const &other)=default
void SendResponse(RequestContext &context) override
BaseSocket & operator=(BaseSocket const &other)=delete
virtual std::shared_ptr< SessionState > ObtainSessionState(RequestContext &context) const =0
bool HandleMessage(Request &request)
BaseSocket(BaseSocket &&other)=delete
void ReadHandler() override
BaseSocket & operator=(BaseSocket &&other)=delete
BaseSocket(boost::asio::ip::tcp::socket &&socket, Args &&... args)
Optional< RequestParser > _httpParser
Optional< boost::uuids::uuid > GetSessionId() const final
QueryCallbackProcessor _queryProcessor
std::string GetClientInfo() const override
virtual RequestHandlerResult RequestHandler(RequestContext &context)=0
BaseSocket(BaseSocket const &other)=delete
std::shared_ptr< SessionState > _state
void QueueQuery(QueryCallback &&queryCallback) override
boost::beast::http::response< ResponseBody > Response
boost::beast::http::request_parser< RequestBody > RequestParser
std::string_view ToStdStringView(boost::beast::string_view bsw)
TC_SHARED_API bool CanLogResponseContent(RequestContext const &context)
boost::beast::http::request< RequestBody > Request
TC_SHARED_API bool CanLogRequestContent(RequestContext const &context)
OutputIt StringFormatTo(OutputIt out, FormatString< Args... > fmt, Args &&... args)