From 7e21069bea9e8e6276591eee98f22cb07d67392d Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Fri, 4 Nov 2016 14:12:57 +0100 Subject: Splits up the Node.cpp class in 3 parts. --- node/node_client.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 node/node_client.cpp (limited to 'node/node_client.cpp') diff --git a/node/node_client.cpp b/node/node_client.cpp new file mode 100644 index 0000000..fef1937 --- /dev/null +++ b/node/node_client.cpp @@ -0,0 +1,46 @@ + +#include "node.hpp" + +void Node::handle_client_keyexchange(ClientConnections::key_type handle, cmix_proto::KeyExchange const& ke) { + CMixClientData d; + + size_t len = get_group_element_array_size(&cmix_ctx); + + cmix_proto::KeyExchange nke; + nke.mutable_public_key()->resize(len); + nke.mutable_value()->resize(len); + + key_exchange(&cmix_ctx, &d.shared_value.shared, &(*nke.mutable_public_key())[0], &(*nke.mutable_value())[0], ke.public_key().data(), ke.value().data()); + + data[handle] = d; + + clients.at(handle).async_send(nke); +} + +void Node::handle_client_bye(ClientConnections::key_type handle, cmix_proto::Bye const&) +{ + clients.at(handle).close(); + clients.erase(handle); +} + +void Node::handle_client_message(ClientConnections::key_type handle, cmix_proto::CMixMessage message) +{ + switch(message.contents_case()) { + case cmix_proto::CMixMessage::ContentsCase::kKeyexchange: { + BOOST_LOG_TRIVIAL(trace) << "Handling keyexchange"; + handle_client_keyexchange(handle, message.keyexchange()); + break; + } + case cmix_proto::CMixMessage::ContentsCase::kBye: { + BOOST_LOG_TRIVIAL(trace) << "Handling bye"; + handle_client_bye(handle, message.bye()); + return; + } + default: { + BOOST_LOG_TRIVIAL(error) << "handle_client_message: CMixMessage contains unknown contents."; + } + } + clients.at(handle).async_receive([this, handle](cmix_proto::CMixMessage message){ + handle_client_message(handle, message); + }); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2