From 7267afd28b9e00864274f55f7a82d4943bade1f8 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Thu, 22 Sep 2016 16:14:01 +0200 Subject: Adds a NextNode class and prepares the Node to start network initialization. --- node/CMakeLists.txt | 1 + node/nextnode.cpp | 7 +++++++ node/nextnode.hpp | 12 ++++++++++++ node/node.cpp | 12 ++++++++++-- node/node.hpp | 21 ++++++++++++++++++++- 5 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 node/nextnode.cpp create mode 100644 node/nextnode.hpp (limited to 'node') diff --git a/node/CMakeLists.txt b/node/CMakeLists.txt index 1c3b771..a4e1f09 100644 --- a/node/CMakeLists.txt +++ b/node/CMakeLists.txt @@ -3,6 +3,7 @@ find_package(Boost COMPONENTS system program_options REQUIRED) add_executable(node main.cpp node.hpp node.cpp + nextnode.hpp nextnode.cpp ) target_compile_options(node diff --git a/node/nextnode.cpp b/node/nextnode.cpp new file mode 100644 index 0000000..3045462 --- /dev/null +++ b/node/nextnode.cpp @@ -0,0 +1,7 @@ +#include "nextnode.hpp" + +using namespace boost::asio::ip; + +NextNode::NextNode(tcp::socket&& socket) +: Client(std::move(socket)) +{} diff --git a/node/nextnode.hpp b/node/nextnode.hpp new file mode 100644 index 0000000..c1ce6a1 --- /dev/null +++ b/node/nextnode.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "client.hpp" + +#include + +class NextNode : public Client +{ +public: + NextNode(boost::asio::ip::tcp::socket&& socket); +}; + diff --git a/node/node.cpp b/node/node.cpp index 497a920..4b4bc2b 100644 --- a/node/node.cpp +++ b/node/node.cpp @@ -1,10 +1,18 @@ #include "node.hpp" +#include "connect.hpp" -Node::Node(ListenSettings const& listen_settings) +Node::Node(ListenSettings const& listen_settings, NodeNetworkSettings network_settings) : io_service() , server(io_service, listen_settings, [this](boost::asio::ip::tcp::socket&& socket){accept_handler(std::move(socket));}) , clients() -{} +, next_node(connect(network_settings.next_host, network_settings.next_port, io_service)) +, api(get_curve25519_implementation()) +, keypair(api.create_key_pair()) +{ + if(network_settings.is_first) { + start_initialisation(); + } +} void Node::accept_handler(boost::asio::ip::tcp::socket&& socket) { diff --git a/node/node.hpp b/node/node.hpp index 7d30188..9e321df 100644 --- a/node/node.hpp +++ b/node/node.hpp @@ -2,20 +2,39 @@ #include "server.hpp" #include "nodeclient.hpp" +#include "nextnode.hpp" + +#include "api.h" +#include "curve25519.h" #include #include +struct NodeNetworkSettings { + bool is_first; + std::string next_host; + std::string next_port; +}; + class Node { boost::asio::io_service io_service; Server server; std::list clients; + NextNode next_node; + + Api api; + KeyPair keypair; + void accept_handler(boost::asio::ip::tcp::socket&& socket); + void start_initialisation() { + + } + public: - Node(ListenSettings const& listen_settings); + Node(ListenSettings const& listen_settings, NodeNetworkSettings network_settings); }; -- cgit v1.2.3-70-g09d2