+
+static int
+process_adv_sent (void *cls, const char *subsystem, const char *name,
+ uint64_t value, int is_persistent)
+{
+ if ((value >= 1) && (adv_sent == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Server has successfully sent advertisement\n");
+ adv_sent = GNUNET_YES;
+ if ((learned_hostlist_downloaded == GNUNET_YES) &&
+ (learned_hostlist_saved == GNUNET_YES))
+ shutdown_testcase ();
+ }
+ return GNUNET_OK;
+}
+
+
+/**
+ * Check the server statistics regularly
+ */
+static void
+check_statistics (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ char *stat;
+
+ check_task = GNUNET_SCHEDULER_NO_TASK;
+ if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
+ return;
+ GNUNET_asprintf (&stat, gettext_noop ("# advertised URI `%s' downloaded"),
+ current_adv_uri);
+ if (NULL != learn_peer.stats)
+ {
+ if (NULL != download_stats)
+ GNUNET_STATISTICS_get_cancel (download_stats);
+ download_stats =
+ GNUNET_STATISTICS_get (learn_peer.stats, "hostlist", stat,
+ GNUNET_TIME_UNIT_MINUTES,
+ &process_downloads_done, &process_downloads,
+ &learn_peer);
+ if (NULL != urisrecv_stat)
+ GNUNET_STATISTICS_get_cancel (urisrecv_stat);
+ urisrecv_stat =
+ GNUNET_STATISTICS_get (learn_peer.stats, "hostlist",
+ gettext_noop ("# advertised hostlist URIs"),
+ GNUNET_TIME_UNIT_MINUTES,
+ &process_uris_recv_done, &process_uris_recv,
+ &learn_peer);
+ }
+ GNUNET_free (stat);
+ if (NULL != adv_peer.stats)
+ {
+ if (NULL != advsent_stat)
+ GNUNET_STATISTICS_get_cancel (advsent_stat);
+ advsent_stat =
+ GNUNET_STATISTICS_get (adv_peer.stats, "hostlist",
+ gettext_noop ("# hostlist advertisements send"),
+ GNUNET_TIME_UNIT_MINUTES, &process_adv_sent_done,
+ &process_adv_sent, NULL);
+ }
+ check_task =
+ GNUNET_SCHEDULER_add_delayed (CHECK_INTERVALL, &check_statistics, NULL);
+}
+
+