diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-27 10:08:19 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-11-27 10:08:19 +0100 |
| commit | 74cea534fd189a2db423ae60997447e66265922b (patch) | |
| tree | decc06fa5da1f3f42612d527462d22ee487bf2db /node/node.cpp | |
| parent | fa7a48172a3c9d9c2f96d6f9c05d80f497bc304d (diff) | |
| download | cmix-74cea534fd189a2db423ae60997447e66265922b.tar.gz cmix-74cea534fd189a2db423ae60997447e66265922b.tar.bz2 cmix-74cea534fd189a2db423ae60997447e66265922b.zip | |
Implements message delivery.
Adds a minimum number of messages per mix.
Embeds the destination in the message.
Clients now send messages to themselves.
Diffstat (limited to 'node/node.cpp')
| -rw-r--r-- | node/node.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
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(); + }); +} |
