aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--network-handler/main.cpp19
-rw-r--r--network-handler/nodemanager.cpp14
-rw-r--r--network-handler/nodemanager.hpp18
3 files changed, 34 insertions, 17 deletions
diff --git a/network-handler/main.cpp b/network-handler/main.cpp
index c8cae05..84de894 100644
--- a/network-handler/main.cpp
+++ b/network-handler/main.cpp
@@ -15,12 +15,13 @@ int main(int argc, char* argv[]) {
po::options_description desc("Allowed options");
desc.add_options()
- ("help,h", "produce help message")
- ("port,p", po::value<uint16_t>()->default_value(9200), "Set listening port")
- ("enable_v4", po::value<bool>()->default_value(true), "Enable/disable ipv4 accept support")
+ ("help,h", "produce help message.")
+ ("port,p", po::value<uint16_t>()->default_value(9200), "Set listening port.")
+ ("enable_v4", po::value<bool>()->default_value(true), "Enable/disable ipv4 accept support.")
("interface4,4", po::value<std::string>()->default_value("0.0.0.0"), "Set the ipv4 address to listen on.")
- ("enable_v6", po::value<bool>()->default_value(true), "Enable/disable ipv6 accept support")
- ("interface6,6", po::value<std::string>()->default_value("::"), "Set the ipv6 address to listen on")
+ ("enable_v6", po::value<bool>()->default_value(true), "Enable/disable ipv6 accept support.")
+ ("interface6,6", po::value<std::string>()->default_value("::"), "Set the ipv6 address to listen on.")
+ ("nodes,n", po::value<std::string>(), "Set the node addreses to use in the cmix network.")
;
po::variables_map vm;
@@ -38,7 +39,7 @@ int main(int argc, char* argv[]) {
std::string if6 = vm["interface6"].as<std::string>();
uint16_t port = vm["port"].as<uint16_t>();
- NodeManager node_manager = key_exchange_phase();
+ NodeManager node_manager({});
ListenSettings lsettings{en4, if4, en6, if6, port};
@@ -46,9 +47,3 @@ int main(int argc, char* argv[]) {
handler.run();
}
-NodeManager key_exchange_phase() {
- NodeManager manager;
-
- return manager;
-}
-
diff --git a/network-handler/nodemanager.cpp b/network-handler/nodemanager.cpp
index f345b72..165cb3b 100644
--- a/network-handler/nodemanager.cpp
+++ b/network-handler/nodemanager.cpp
@@ -1,4 +1,14 @@
#include "nodemanager.hpp"
-NodeManager::NodeManager()
-{}
+#include "connect.hpp"
+
+NodeManager::NodeManager(std::vector<ConnectionInfo> connections)
+: io_service()
+, api(get_curve25519_implementation())
+, key_pair(api.create_key_pair())
+, nodes()
+{
+ for(auto&& ci : connections) {
+ nodes.emplace_back(connect(ci.host, ci.port, io_service));
+ }
+}
diff --git a/network-handler/nodemanager.hpp b/network-handler/nodemanager.hpp
index e6a42c5..651e6a4 100644
--- a/network-handler/nodemanager.hpp
+++ b/network-handler/nodemanager.hpp
@@ -1,12 +1,24 @@
#pragma once
#include "nodeclient.hpp"
+#include "api.h"
+#include "curve25519.h"
-#include <vector>
+#include <list>
+
+struct ConnectionInfo {
+ std::string host;
+ std::string port;
+};
class NodeManager
{
- std::vector<NodeClient> clients;
+ boost::asio::io_service io_service;
+ Api api;
+ KeyPair key_pair;
+ std::list<NodeClient> nodes;
public:
- NodeManager();
+ NodeManager(std::vector<ConnectionInfo> connections);
+
+
};