doc: gnunet-c-tutorial: Add nodes.
[oweals/gnunet.git] / src / nse / gnunet-nse.c
index ec2ad26d3757162f3387482541f4e4f2128990de..bd6bcec55000041ecfec62fca8905bf69cbcd874 100644 (file)
@@ -1,6 +1,6 @@
 /*
       This file is part of GNUnet
-      (C) 2008--2014 Christian Grothoff (and other contributing authors)
+      Copyright (C) 2008--2014, 2016 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 nse/gnunet-nse.c
  * @brief Program to display network size estimates from the NSE service
- * @author Sree Harsha Totakura <sreeharsha@totakura.in> 
+ * @author Sree Harsha Totakura <sreeharsha@totakura.in>
  */
 
 #include "platform.h"
 #include "gnunet_nse_service.h"
 
-/**
- * Handle to our configuration
- */
-static struct GNUNET_CONFIGURATION_Handle *cfg;
-
 /**
  * The handle to the NSE service
  */
 static struct GNUNET_NSE_Handle *nse;
 
-/**
- * The handle to test if NSE service is running or not
- */
-static struct GNUNET_CLIENT_TestHandle *test;
-
-/**
- * Shutdown task
- */
-static GNUNET_SCHEDULER_TaskIdentifier shutdown_task;
-
 /**
  * The program status; 0 for success.
  */
@@ -57,18 +42,15 @@ static int status;
  * Task to shutdown and clean up all state
  *
  * @param cls NULL
- * @param tc the scheduler task context
  */
 static void
-do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+do_shutdown (void *cls)
 {
-  shutdown_task = GNUNET_SCHEDULER_NO_TASK;
-  if (NULL != test)
-    GNUNET_CLIENT_service_test_cancel (test);
   if (NULL != nse)
+  {
     GNUNET_NSE_disconnect (nse);
-  if (NULL != cfg)
-    GNUNET_CONFIGURATION_destroy (cfg);
+    nse = NULL;
+  }
 }
 
 
@@ -84,8 +66,10 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 static void
 handle_estimate (void *cls,
                 struct GNUNET_TIME_Absolute timestamp,
-                 double estimate, double std_dev)
+                 double estimate,
+                double std_dev)
 {
+  status = 0;
   FPRINTF (stdout, "%llu %f %f %f\n",
            (unsigned long long) timestamp.abs_value_us,
            GNUNET_NSE_log_estimate_to_n (estimate),
@@ -94,38 +78,6 @@ handle_estimate (void *cls,
 }
 
 
-/**
- * Function called with the result on the service test for the NSE service
- *
- * @param cls NULL
- * @param result #GNUNET_YES if the service is running,
- *               #GNUNET_NO if the service is not running
- *               #GNUNET_SYSERR if the configuration is invalid
- */
-static void
-nse_test_result (void *cls, int result)
-{
-  test = NULL;
-  switch (result)
-  {
-  case GNUNET_YES:
-    nse = GNUNET_NSE_connect (cfg, &handle_estimate, NULL);
-    status = 0;
-    break;
-  case GNUNET_NO:
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("NSE service is not running\n"));
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  default:
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _("Error while checking if NSE service is running or not\n"));
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  }
-}
-
-
 /**
  * Actual main function that runs the emulation.
  *
@@ -135,17 +87,16 @@ nse_test_result (void *cls, int result)
  * @param cfg configuration handle
  */
 static void
-run (void *cls, char *const *args, const char *cfgfile,
-     const struct GNUNET_CONFIGURATION_Handle *_cfg)
+run (void *cls,
+     char *const *args,
+     const char *cfgfile,
+     const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
-  cfg = GNUNET_CONFIGURATION_dup (_cfg);
-  test = GNUNET_CLIENT_service_test ("nse",
-                                     cfg,
-                                     GNUNET_TIME_UNIT_SECONDS,
-                                     nse_test_result,
-                                     NULL);
-  shutdown_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
-                                                &do_shutdown, NULL);
+  nse = GNUNET_NSE_connect (cfg,
+                           &handle_estimate,
+                           NULL);
+  GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+                                NULL);
 }
 
 
@@ -155,18 +106,22 @@ run (void *cls, char *const *args, const char *cfgfile,
  * @return 0 on success
  */
 int
-main (int argc, char *const *argv)
+main (int argc,
+      char *const *argv)
 {
   static struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
-  
+
   status = 1;
   if (GNUNET_OK !=
-      GNUNET_PROGRAM_run (argc, argv, "gnunet-nse",
+      GNUNET_PROGRAM_run (argc,
+                         argv,
+                         "gnunet-nse",
                          gettext_noop
                          ("Show network size estimates from NSE service."),
-                         options, &run, NULL))
+                         options,
+                         &run, NULL))
     return 2;
   return status;
 }