aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server/main/session_manager.hpp
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2019-12-07 03:36:21 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2019-12-07 03:36:21 +0300
commit00863566ec4601c65c435b74e575d49546a1c707 (patch)
tree479a0a6e96aba8191c7a65ea9bee2f4d5e3a4aba /server/main/session_manager.hpp
parentadd stress_test.py (diff)
downloadmath-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.hpp30
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;
+};
+
+}