#pragma once #include #include #include #include #include #include #include #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 { beast::tcp_stream stream_; beast::flat_buffer buffer_; std::shared_ptr doc_root_; http::request req_; public: Session( tcp::socket&& socket, std::shared_ptr 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(); }; }