#define FIND_TIMEOUT \
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 90)
-#define ANNOUNCE_TIME \
- GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 200)
#define SEARCHES_IN_PARALLEL 100
/**
char *policy_file;
/**
- * Peers search string.
+ * Peer's search string.
*/
const char *search_str;
/**
* Index of peer to start next announce/search..
*/
-static unsigned int search_index;
+static unsigned int next_search;
/**
* Search task identifier
*/
static char * regex_prefix;
+/**
+ * What's the maximum regex reannounce period.
+ */
+static struct GNUNET_TIME_Relative reannounce_period_max;
+
/******************************************************************************/
/****************************** DECLARATIONS ********************************/
peer_cnt >= num_search_strings)
return;
- parallel_searches++;
peers[peer_cnt].search_str = search_strings[peer_cnt];
peers[peer_cnt].search_str_matched = GNUNET_NO;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
{
struct RegexPeer *peer = cls;
- peer->arm_handle = GNUNET_ARM_alloc (cfg);
- GNUNET_ARM_connect (peer->arm_handle, NULL, NULL);
+ peer->arm_handle = GNUNET_ARM_connect (cfg, NULL, NULL);
return peer->arm_handle;
}
if (NULL != peer->arm_handle)
{
- GNUNET_ARM_disconnect (peer->arm_handle);
+ GNUNET_ARM_disconnect_and_free (peer->arm_handle);
peer->arm_handle = NULL;
}
}
{
long search_peer;
- unsigned int i = 0;
+ unsigned int i;
+ unsigned int me;
+
+ me = peer - peers;
/* Find a peer to look for a string matching the regex announced */
search_peer = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
{
search_peer = (search_peer + 1) % num_peers;
if (i > num_peers)
- GNUNET_abort (); /* we run out of peers, must be a bug */
+ GNUNET_abort (); /* we ran out of peers, must be a bug */
}
- peers[search_peer].search_str = search_strings[search_index];
- GNUNET_SCHEDULER_add_delayed (ANNOUNCE_TIME,
+ peers[search_peer].search_str = search_strings[me];
+ GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(
+ reannounce_period_max,
+ 2),
&find_string,
(void *) search_peer);
}
- if (search_index == (num_peers - 1) &&
+ if (next_search >= num_peers &&
GNUNET_SCHEDULER_NO_TASK == search_timeout_task)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "All daemons started.\n");
}
GNUNET_assert (NULL != peer->arm_handle);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "[]%p - ()%p\n", peer->op_handle, op);
GNUNET_assert (peer->op_handle == op);
GNUNET_assert (peer->arm_handle == ca_result);
announce_next_regex (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) ||
- search_index >= num_peers)
+ next_search >= num_peers)
return;
/* First connect to arm service, then announce. Next
* a nnounce will be in arm_connect_cb */
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Starting daemon %u\n", search_index);
- peers[search_index].op_handle =
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Starting daemon %u\n", next_search);
+ peers[next_search].op_handle =
GNUNET_TESTBED_service_connect (NULL,
- peers[search_index].peer_handle,
+ peers[next_search].peer_handle,
"arm",
&arm_connect_cb,
- &peers[search_index],
+ &peers[next_search],
&arm_ca,
&arm_da,
- &peers[search_index]);
- search_index++;
+ &peers[next_search]);
+ next_search++;
parallel_searches++;
}
shutdown_task = GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
return;
}
+ cfg = GNUNET_CONFIGURATION_dup (config);
+ if (GNUNET_OK !=
+ GNUNET_CONFIGURATION_get_value_time (cfg, "REGEXPROFILER",
+ "REANNOUNCE_PERIOD_MAX",
+ &reannounce_period_max))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "reannounce_period_max not given. Using 10 minutes.\n");
+ reannounce_period_max =
+ GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10);
+ }
unsigned int i;
for (i = 0; i < num_search_strings; i++)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "search string: %s\n", search_strings[i]);
- cfg = GNUNET_CONFIGURATION_dup (config);
abort_task =
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS, 5), &do_abort,