aboutsummaryrefslogtreecommitdiff
path: root/node/node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/node.cpp')
-rw-r--r--node/node.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/node/node.cpp b/node/node.cpp
new file mode 100644
index 0000000..497a920
--- /dev/null
+++ b/node/node.cpp
@@ -0,0 +1,21 @@
+#include "node.hpp"
+
+Node::Node(ListenSettings const& listen_settings)
+: io_service()
+, server(io_service, listen_settings, [this](boost::asio::ip::tcp::socket&& socket){accept_handler(std::move(socket));})
+, clients()
+{}
+
+void Node::accept_handler(boost::asio::ip::tcp::socket&& socket)
+{
+ clients.emplace_back(std::move(socket));
+
+ auto it = --clients.end();
+ clients.back().on_done(
+ [this, it]() {
+ clients.erase(it);
+ }
+ );
+
+ clients.back().receive();
+}