UpAndDown/src/Session.h
2024-12-11 12:07:19 +01:00

50 lines
985 B
C++

#pragma once
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
#include <boost/beast/version.hpp>
#include <boost/asio/dispatch.hpp>
#include <boost/asio/strand.hpp>
#include <memory>
#include <string>
#include "helpers.h"
namespace uad
{
namespace beast = boost::beast;
namespace http = beast::http;
using tcp = boost::asio::ip::tcp;
namespace net = boost::asio;
class Session : public std::enable_shared_from_this<Session>
{
beast::tcp_stream stream_;
beast::flat_buffer buffer_;
std::shared_ptr<std::string const> doc_root_;
http::request<http::string_body> req_;
public:
Session(
tcp::socket&& socket,
std::shared_ptr<std::string const> const& doc_root);
void Run();
void DoRead();
void OnRead(
beast::error_code ec,
std::size_t bytes_transferred);
void SendResponse(http::message_generator&& msg);
void OnWrite(
bool keep_alive,
beast::error_code ec,
std::size_t bytes_transferred);
void DoClose();
};
}