*/
#include "platform.h"
#include "gnunet_util_lib.h"
+#include "gnunet_time_lib.h"
#include "gnunet_consensus_service.h"
#include "gnunet_testbed_service.h"
static struct GNUNET_TIME_Relative conclude_timeout;
+static struct GNUNET_TIME_Relative consensus_delay;
+
static struct GNUNET_CONSENSUS_Handle **consensus_handles;
static struct GNUNET_TESTBED_Operation **testbed_operations;
static int verbose;
+/**
+ * Start time for all consensuses.
+ */
+static struct GNUNET_TIME_Absolute start;
+
+/**
+ * Deadline for all consensuses.
+ */
+static struct GNUNET_TIME_Absolute deadline;
+
/**
* Signature of the event handler function called by the
for (i = 0; i < num_peers; i++)
GNUNET_CONSENSUS_conclude (consensus_handles[i],
- conclude_timeout,
conclude_cb, &consensus_handles[i]);
}
consensus = GNUNET_CONSENSUS_create (cfg,
num_peers, peer_ids,
&session_id,
+ start,
+ deadline,
&new_element_cb, chp);
*chp = (struct GNUNET_CONSENSUS_Handle *) consensus;
return consensus;
return;
}
+ start = GNUNET_TIME_absolute_add (GNUNET_TIME_absolute_get (), consensus_delay);
+ deadline = GNUNET_TIME_absolute_add (start, conclude_timeout);
+
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"running gnunet-consensus\n");
{ 't', "timeout", NULL,
gettext_noop ("consensus timeout"),
GNUNET_YES, &GNUNET_GETOPT_set_relative_time, &conclude_timeout },
+ { 'd', "delay", NULL,
+ gettext_noop ("delay until consensus starts"),
+ GNUNET_YES, &GNUNET_GETOPT_set_relative_time, &consensus_delay },
{ 'V', "verbose", NULL,
gettext_noop ("be more verbose (print received values)"),
GNUNET_NO, &GNUNET_GETOPT_set_one, &verbose },