* @author Matthias Wachs
*/
#include "platform.h"
-#include "gnunet_getopt_lib.h"
#include "gnunet_util_lib.h"
#include "gnunet_core_service.h"
#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
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,
{
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);
-
}
return (GNUNET_OK ==
GNUNET_PROGRAM_run (argc, argv, "experimentation",
- _("GNUnet hostlist server and client"), options,
+ _("GNUnet experimentation daemon"), options,
&run, NULL)) ? 0 : 1;
}