From 51beb16ed97425d740c880623ce82710d9124ef8 Mon Sep 17 00:00:00 2001 From: Sithas777 Date: Wed, 13 Sep 2023 18:13:28 +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=A2=D0=B0=D0=BA=20=D0=BA=D0=B0=D0=BA=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20SessionBase::Run=20=D0=BC=D1=8B=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B7=D0=B2=D0=B0=D0=BB=D0=B8=20=D0=B2=D0=BD=D1=83=D1=82=D1=80?= =?UTF-8?q?=D0=B8=20strand,=20=D1=81=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D1=81=20=D0=B0=D0=BA=D1=86=D0=B5=D0=BF?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=BC,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/listener.h | 5 ++++- src/session.h | 7 +++++++ src/session_base.cpp | 8 ++++++++ src/session_base.h | 5 +++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/listener.h b/src/listener.h index 3e10a0a..9f486c4 100644 --- a/src/listener.h +++ b/src/listener.h @@ -66,6 +66,9 @@ class Listener : public std::enable_shared_from_this> } void AsyncRunSession(tcp::socket&& socket) - {} + { + std::make_shared>(std::move(socket), + request_handler_)->Run(); + } }; } // namespace http_server \ No newline at end of file diff --git a/src/session.h b/src/session.h index b7eb85a..d517ee6 100644 --- a/src/session.h +++ b/src/session.h @@ -20,9 +20,16 @@ namespace http = beast::http; template class Session : public SessionBase, public std::enable_shared_from_this> { RequestHandler request_handler_; + + public: template Session(tcp::socket&& socket, Handler&& request_handler) : SessionBase(std::move(socket)), request_handler_(request_handler) {} + + std::shared_ptr GetSharedThis() override + { + return this->shared_from_this(); + } }; } // namespace http_server \ No newline at end of file diff --git a/src/session_base.cpp b/src/session_base.cpp index b0cd9f2..d913530 100644 --- a/src/session_base.cpp +++ b/src/session_base.cpp @@ -13,5 +13,13 @@ SessionBase::SessionBase(tcp::socket&& socket) : stream_(std::move(socket)) { +} +void SessionBase::Run() +{ + +} +void SessionBase::Read() +{ + } } // namespace http_server diff --git a/src/session_base.h b/src/session_base.h index 0b711e7..9e53cfe 100644 --- a/src/session_base.h +++ b/src/session_base.h @@ -32,6 +32,11 @@ class SessionBase { SessionBase(const SessionBase&) = delete; SessionBase& operator =(const SessionBase&) = delete; + void Run(); + void Read(); + + virtual std::shared_ptr GetSharedThis() = 0; + protected: explicit SessionBase(tcp::socket&& socket);