aboutsummaryrefslogtreecommitdiff
path: root/node/node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/node.cpp')
-rw-r--r--node/node.cpp22
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();
+ });
+}