aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server/main/server.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/main/server.hpp')
-rw-r--r--server/main/server.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/server/main/server.hpp b/server/main/server.hpp
new file mode 100644
index 0000000..5524f88
--- /dev/null
+++ b/server/main/server.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "session_manager.hpp"
+#include "settings.hpp"
+
+#include <boost/asio.hpp>
+#include <boost/system/error_code.hpp>
+
+namespace math::server {
+
+class Server {
+public:
+ Server(const Settings& settings);
+ Server(unsigned port, unsigned threads);
+
+ void run();
+
+private:
+ void wait_for_signal();
+ void handle_signal(const boost::system::error_code&, int);
+
+ void accept();
+ void handle_accept(SessionPtr session, const boost::system::error_code& ec);
+
+ const unsigned m_numof_threads;
+
+ boost::asio::io_context m_io_context;
+ boost::asio::signal_set m_signals;
+ boost::asio::ip::tcp::acceptor m_acceptor;
+
+ SessionManager m_session_mgr;
+};
+
+}