From 97e6e358ef41680203b97e4ae7b03ccc6cdb5a03 Mon Sep 17 00:00:00 2001 From: Sithas777 Date: Wed, 13 Sep 2023 18:02:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8C=20=20-=20=D0=B1=D0=B0=D0=B7=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D0=B5=D1=81=D1=81=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=94=D0=BB=D1=8F=20=D0=B0=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=D0=B5=D1=81=D1=81=D0=B8=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D1=8C=D1=82=D0=B5=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20SessionBase::Run?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/session.h | 6 +++++- src/session_base.cpp | 5 +++++ src/session_base.h | 17 ++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/session.h b/src/session.h index 8ea5839..b7eb85a 100644 --- a/src/session.h +++ b/src/session.h @@ -19,6 +19,10 @@ namespace http = beast::http; template class Session : public SessionBase, public std::enable_shared_from_this> { - // Напишите недостающий код, используя информацию из урока + RequestHandler request_handler_; + template + Session(tcp::socket&& socket, Handler&& request_handler) + : SessionBase(std::move(socket)), request_handler_(request_handler) + {} }; } // namespace http_server \ No newline at end of file diff --git a/src/session_base.cpp b/src/session_base.cpp index 9b6c3b6..b0cd9f2 100644 --- a/src/session_base.cpp +++ b/src/session_base.cpp @@ -8,5 +8,10 @@ namespace http_server { void ReportError(beast::error_code ec, std::string_view what) { std::cerr << what << ": "sv << ec.message() << std::endl; +} +SessionBase::SessionBase(tcp::socket&& socket) +: stream_(std::move(socket)) +{ + } } // namespace http_server diff --git a/src/session_base.h b/src/session_base.h index 0cc78cf..0b711e7 100644 --- a/src/session_base.h +++ b/src/session_base.h @@ -23,6 +23,21 @@ using namespace std::literals; void ReportError(beast::error_code ec, std::string_view what); class SessionBase { - // Напишите недостающий код, используя информацию из урока + protected: + using HttpRequest = http::request; + + ~SessionBase() = default; + + public: + SessionBase(const SessionBase&) = delete; + SessionBase& operator =(const SessionBase&) = delete; + + protected: + explicit SessionBase(tcp::socket&& socket); + + private: + beast::tcp_stream stream_; + beast::flat_buffer buffer_; + HttpRequest request_; }; } // namespace http_server \ No newline at end of file