- replace deprecated INCLUDES with AM_CPPFLAGS
[oweals/gnunet.git] / src / experimentation / gnunet-daemon-experimentation.c
index 708a1f7eaabc11664c3ea4cf7368e4c0744eee79..60a515022ebb6172880503db8746677e075528b2 100644 (file)
 #include "gnunet_statistics_service.h"
 #include "gnunet-daemon-experimentation.h"
 
-#define EXP_RESPONSE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
 
+/**
+ * Statistics handle shared between components
+ */
+struct GNUNET_STATISTICS_Handle *GED_stats;
+
+
+/**
+ * Configuration handle shared between components
+ */
+struct GNUNET_CONFIGURATION_Handle *GED_cfg;
 
-static struct GNUNET_STATISTICS_Handle *stats;
 
 /**
- * Task run during shutdown.
+ * Task run during shutdown to stop all submodules of the experimentation daemon.
  *
  * @param cls unused
  * @param tc unused
@@ -46,16 +54,22 @@ static void
 shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Experimentation daemon shutting down ...\n"));
-  GNUNET_EXPERIMENTATION_nodes_stop();
-}
 
+  GED_scheduler_stop ();
+  GED_nodes_stop ();
+  GED_experiments_stop ();
+  GED_storage_stop ();
+  GED_capabilities_stop ();
+}
 
 
 /**
- * The main function for the experimentation daemon.
+ * Function starting all submodules of the experimentation daemon.
  *
- * @param argc number of arguments from the command line
- * @param argv command line arguments
+ * @param cls always NULL
+ * @param args temaining command line arguments
+ * @param cfgfile configuration file used
+ * @param cfg configuration handle
  */
 static void
 run (void *cls, char *const *args, const char *cfgfile,
@@ -63,18 +77,28 @@ run (void *cls, char *const *args, const char *cfgfile,
 {
        GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Experimentation daemon starting ...\n"));
 
-       stats = GNUNET_STATISTICS_create ("experimentation", cfg);
-       if (NULL == stats)
+       GED_cfg = (struct GNUNET_CONFIGURATION_Handle *) cfg;
+       GED_stats = GNUNET_STATISTICS_create ("experimentation", cfg);
+       if (NULL == GED_stats)
        {
                GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Failed to create statistics!\n"));
                return;
        }
 
-       GNUNET_EXPERIMENTATION_nodes_start (cfg);
+       GED_capabilities_start ();
+
+       GED_storage_start ();
 
+       if (GNUNET_SYSERR == GED_experiments_start ())
+       {
+         GNUNET_SCHEDULER_add_now (&shutdown_task, NULL);
+         return;
+       }
+
+       GED_nodes_start ();
+  GED_scheduler_start ();
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task,
                                 NULL);
-
 }
 
 
@@ -94,7 +118,7 @@ main (int argc, char *const *argv)
 
   return (GNUNET_OK ==
           GNUNET_PROGRAM_run (argc, argv, "experimentation",
-                                                                                       _("GNUnet hostlist server and client"), options,
+                                                                                       _("GNUnet experimentation daemon"), options,
                               &run, NULL)) ? 0 : 1;
 }