-only trigger check config if we actually need it
[oweals/gnunet.git] / src / fs / gnunet-fs-profiler.c
index 4d4d3405109d6c64a8d1b777b02537f6af12e638..cfbe57bbdbca4a40b9295900e33fd1d41203afe5 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2012 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2012 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
  * @file fs/gnunet-fs-profiler.c
- * @brief tool to benchmark/profile file-sharing 
+ * @brief tool to benchmark/profile file-sharing
  * @author Christian Grothoff
  */
 #include "platform.h"
@@ -50,7 +50,7 @@ static struct GNUNET_TIME_Relative timeout;
 /**
  * Handle to the task run during termination.
  */
-static GNUNET_SCHEDULER_TaskIdentifier terminate_taskid;
+static struct GNUNET_SCHEDULER_Task * terminate_taskid;
 
 
 /**
@@ -105,18 +105,21 @@ process_stats (void *cls,
 
 
 /**
- * Task run on timeout to terminate.  Triggers printing out
+ * Task run on shutdown to terminate.  Triggers printing out
  * all statistics.
  *
  * @param cls NULL
- * @param tc unused
  */
 static void
-terminate_task (void *cls,
-               const struct GNUNET_SCHEDULER_TaskContext *tc)
+terminate_task (void *cls)
 {
-  terminate_taskid = GNUNET_SCHEDULER_NO_TASK;
+  if (NULL != terminate_taskid)
+  {
+    GNUNET_SCHEDULER_cancel (terminate_taskid);
+    terminate_taskid = NULL;
+  }
   GNUNET_TESTBED_get_statistics (0, NULL,
+                                 NULL, NULL,
                                 &process_stats,
                                 &shutdown_task,
                                 NULL);
@@ -124,26 +127,49 @@ terminate_task (void *cls,
 
 
 /**
- * The testbed has been started, now begin the experiment.
+ * Task run on timeout to terminate.  Triggers printing out
+ * all statistics.
  *
- * @param cls configuration handle
- * @param tc scheduler context
- */ 
+ * @param cls NULL
+ */
+static void
+timeout_task (void *cls)
+{
+  terminate_taskid = NULL;
+  GNUNET_SCHEDULER_shutdown ();
+}
+
+
+/**
+ * Signature of a main function for a testcase.
+ *
+ * @param cls closure
+ * @param h the run handle
+ * @param num_peers number of peers in 'peers'
+ * @param peers handle to peers run in the testbed
+ * @param links_succeeded the number of overlay link connection attempts that
+ *          succeeded
+ * @param links_failed the number of overlay link connection attempts that
+ *          failed
+ */
 static void
-master_task (void *cls,
-            const struct GNUNET_SCHEDULER_TaskContext *tc)
+test_master (void *cls,
+             struct GNUNET_TESTBED_RunHandle *h,
+             unsigned int num_peers,
+             struct GNUNET_TESTBED_Peer **peers,
+             unsigned int links_succeeded,
+             unsigned int links_failed)
 {
   // const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
   // FIXME: enable clients to signal 'completion' before timeout;
   // in that case, run the 'terminate_task' "immediately"
 
-  if (0 != timeout.rel_value)
+  if (0 != timeout.rel_value_us)
     terminate_taskid = GNUNET_SCHEDULER_add_delayed (timeout,
-                                                    &terminate_task, NULL);
-  else
-    terminate_taskid = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, 
-                                                    &terminate_task,
+                                                    &timeout_task,
                                                     NULL);
+   GNUNET_SCHEDULER_add_shutdown (&terminate_task,
+                                 NULL);
 }
 
 
@@ -163,7 +189,7 @@ run (void *cls, char *const *args, const char *cfgfile,
                      cfg,
                      num_peers,
                      0, NULL, NULL,
-                     &master_task, (void *) cfg);
+                     &test_master, (void *) cfg);
 }