From 74cea534fd189a2db423ae60997447e66265922b Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Sun, 27 Nov 2016 10:08:19 +0100 Subject: Implements message delivery. Adds a minimum number of messages per mix. Embeds the destination in the message. Clients now send messages to themselves. --- node/node.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'node/node.cpp') diff --git a/node/node.cpp b/node/node.cpp index 2310bc1..84ea179 100644 --- a/node/node.cpp +++ b/node/node.cpp @@ -156,8 +156,14 @@ void Node::handle_message(Purgatory::iterator handle, cmix_proto::CMixMessage me } void Node::start_precomputation() { - BOOST_LOG_TRIVIAL(trace) << "Starting precomputation for " << clients.size() << " clients."; + BOOST_LOG_TRIVIAL(trace) << "Starting precomputation for " << messages.size() << " clients."; index_map.clear(); + + if(messages.size() < network_settings.minimum_nr_messages) { + start_timer_delayed_mix(); + return; + } + if(start_mix(&cmix_ctx, messages.size()) != no_error) { exit(-1); } @@ -278,3 +284,17 @@ bool Node::send_bye(bool got_bye) return false; } } + +void Node::start_timer_delayed_mix() +{ + timer.expires_from_now(boost::posix_time::millisec(500)); + timer.async_wait([this](boost::system::error_code const& ec) { + if(ec == boost::system::errc::operation_canceled) { + return; + } + if(ec) { + throw std::runtime_error(ec.message()); + } + start_precomputation(); + }); +} -- cgit v1.2.3-70-g09d2