diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2019-12-07 03:36:21 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2019-12-07 03:36:21 +0300 |
commit | 00863566ec4601c65c435b74e575d49546a1c707 (patch) | |
tree | 479a0a6e96aba8191c7a65ea9bee2f4d5e3a4aba /server/main/session_manager.hpp | |
parent | add stress_test.py (diff) | |
download | math-server-00863566ec4601c65c435b74e575d49546a1c707.tar.gz math-server-00863566ec4601c65c435b74e575d49546a1c707.zip |
split server into multiple components
In a vague attempt to make header files more readable, split server/
into a number of components.
Also, refactor the unit tests to use the "Data-driven test cases" of
Boost.Test.
Diffstat (limited to 'server/main/session_manager.hpp')
-rw-r--r-- | server/main/session_manager.hpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/server/main/session_manager.hpp b/server/main/session_manager.hpp new file mode 100644 index 0000000..f0bec0b --- /dev/null +++ b/server/main/session_manager.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include <boost/asio.hpp> + +#include <mutex> +#include <memory> +#include <unordered_set> + +namespace math::server { + +class Session; +using SessionPtr = std::shared_ptr<Session>; + +class SessionManager { +public: + SessionManager() = default; + + SessionPtr make_session(boost::asio::io_context&); + + void start(const SessionPtr&); + void stop(const SessionPtr&); + + void stop_all(); + +private: + std::mutex m_mtx; + std::unordered_set<SessionPtr> m_sessions; +}; + +} |