#pragma once #include "node.hpp" #include "api.h" #include "logging.hpp" #include "client.hpp" #include "connect.hpp" #include "cmix.pb.h" #include #include struct NodeDetails { std::string host; std::string port; }; class CMixClient { boost::asio::io_service io_service; std::vector network_details; std::vector network_connections; Api api; KeyPair keypair; std::vector shared_keys; void key_exchange(int i); void initialize_connections(); cmix_proto::CMixMessage parse_cmix_message(std::vector const& buffer); void handle_key_exchange(int node_id, cmix_proto::KeyExchange const& ke); void handle_message(int node_id, std::vector const& message_buffer); public: CMixClient(std::vector details); void run(); };