preparations for replacing try_connect from gnunet-transport-profiler.
authorChristian Grothoff <christian@grothoff.org>
Thu, 29 Oct 2015 14:32:42 +0000 (14:32 +0000)
committerChristian Grothoff <christian@grothoff.org>
Thu, 29 Oct 2015 14:32:42 +0000 (14:32 +0000)
src/transport/Makefile.am
src/transport/gnunet-transport-profiler.c

index 001681181c346030e69dc8b412023595e1efd58e..7cd4596df12d44a17b482eda239fa4e367dd78af 100644 (file)
@@ -228,6 +228,7 @@ gnunet_transport_profiler_LDADD = \
   libgnunettransport.la \
   $(top_builddir)/src/nat/libgnunetnat.la \
   $(top_builddir)/src/hello/libgnunethello.la \
+  $(top_builddir)/src/ats/libgnunetats.la \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(GN_LIBINTL)
 
index af52a7377f3a92b6cb206d7b6c7877efd5c9355d..e33a71d17a73caf2902786b6533b93df84fd16b2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  This file is part of GNUnet.
- Copyright (C) 2011-2014 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2011-2015 Christian Grothoff (and other contributing authors)
 
  GNUnet is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
  */
 
 /**
- * @file src/transport/gnunet-transport.c
- * @brief Tool to help configure, measure and control the transport subsystem.
+ * @file src/transport/gnunet-transport-profiler.c
+ * @brief Tool to help benchmark the transport subsystem.
  * @author Christian Grothoff
  * @author Nathan Evans
  *
- * This utility can be used to test if a transport mechanism for
- * GNUnet is properly configured.
+ * This utility can be used to benchmark a transport mechanism for
+ * GNUnet.
  */
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_protocols.h"
+#include "gnunet_ats_service.h"
 #include "gnunet_transport_service.h"
 
 struct Iteration
@@ -108,6 +109,11 @@ static char *cpid;
  */
 static struct GNUNET_TRANSPORT_Handle *handle;
 
+/**
+ * Handle to ATS service.
+ */
+static struct GNUNET_ATS_ConnectivityHandle *ats;
+
 /**
  * Configuration handle
  */
@@ -116,11 +122,11 @@ static struct GNUNET_CONFIGURATION_Handle *cfg;
 /**
  * Try_connect handle
  */
-struct GNUNET_TRANSPORT_TryConnectHandle *tc_handle;
+static struct GNUNET_TRANSPORT_TryConnectHandle *tc_handle;
 
+static struct Iteration *ihead;
 
-struct Iteration *ihead;
-struct Iteration *itail;
+static struct Iteration *itail;
 
 /**
  * Global return value (0 success).
@@ -131,7 +137,7 @@ static int ret;
  */
 static struct GNUNET_TRANSPORT_TransmitHandle *th;
 
-struct GNUNET_TRANSPORT_Blacklist *bl_handle;
+static struct GNUNET_TRANSPORT_Blacklist *bl_handle;
 
 /**
  * Identity of the peer we transmit to / connect to.
@@ -149,6 +155,7 @@ static struct GNUNET_SCHEDULER_Task * end;
  */
 static int verbosity;
 
+
 /**
  * Task run in monitor mode when the user presses CTRL-C to abort.
  * Stops monitoring activity.
@@ -186,7 +193,11 @@ shutdown_task (void *cls,
     GNUNET_TRANSPORT_blacklist_cancel (bl_handle);
     bl_handle = NULL;
   }
-
+  if (NULL != ats)
+  {
+    GNUNET_ATS_connectivity_done (ats);
+    ats = NULL;
+  }
   if (NULL != handle)
   {
     GNUNET_TRANSPORT_disconnect (handle);
@@ -283,6 +294,7 @@ shutdown_task (void *cls,
 static void
 iteration_done ();
 
+
 /**
  * Function called to notify a client about the socket
  * begin ready to queue more data.  @a buf will be
@@ -360,6 +372,7 @@ iteration_start ()
   }
 }
 
+
 static void
 iteration_done ()
 {
@@ -382,7 +395,6 @@ iteration_done ()
 }
 
 
-
 /**
  * Function called to notify transport users that another
  * peer connected to us.
@@ -437,6 +449,7 @@ notify_disconnect (void *cls,
   }
 }
 
+
 /**
  * Function called by the transport for each received message.
  *
@@ -463,7 +476,6 @@ notify_receive (void *cls,
 }
 
 
-
 static void
 try_connect_cb (void *cls,
                 const int result)
@@ -498,6 +510,7 @@ try_connect_cb (void *cls,
   }
 }
 
+
 static int
 blacklist_cb (void *cls, const struct GNUNET_PeerIdentity *peer)
 {
@@ -543,14 +556,14 @@ testservice_task (void *cls, int result)
     FPRINTF (stderr, _("No peer identity given\n"));
     return;
   }
-  if ((GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string (cpid, strlen (cpid),
-              &pid.public_key)))
+  if ((GNUNET_OK !=
+       GNUNET_CRYPTO_eddsa_public_key_from_string (cpid, strlen (cpid),
+                                                   &pid.public_key)))
   {
     FPRINTF (stderr, _("Failed to parse peer identity `%s'\n"), cpid);
     return;
   }
 
-
   if (1 == benchmark_send)
   {
     if (verbosity > 0)
@@ -570,18 +583,33 @@ testservice_task (void *cls, int result)
     return;
   }
 
-  handle = GNUNET_TRANSPORT_connect (cfg, NULL, NULL, &notify_receive,
-      &notify_connect, &notify_disconnect);
+  ats = GNUNET_ATS_connectivity_init (cfg);
+  if (NULL == ats)
+  {
+    FPRINTF (stderr, "%s", _("Failed to connect to ATS service\n"));
+    ret = 1;
+    return;
+  }
 
+  handle = GNUNET_TRANSPORT_connect (cfg, NULL, NULL,
+                                     &notify_receive,
+                                     &notify_connect,
+                                     &notify_disconnect);
   if (NULL == handle)
   {
     FPRINTF (stderr, "%s", _("Failed to connect to transport service\n"));
+    GNUNET_ATS_connectivity_done (ats);
+    ats = NULL;
     ret = 1;
     return;
   }
 
-  bl_handle = GNUNET_TRANSPORT_blacklist (cfg, blacklist_cb, NULL);
-  tc_handle = GNUNET_TRANSPORT_try_connect(handle, &pid, try_connect_cb, NULL);
+  bl_handle = GNUNET_TRANSPORT_blacklist (cfg,
+                                          &blacklist_cb,
+                                          NULL);
+  tc_handle = GNUNET_TRANSPORT_try_connect (handle, &pid,
+                                            &try_connect_cb,
+                                            NULL);
 
   end = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                       &shutdown_task,
@@ -608,6 +636,7 @@ run (void *cls,
       &testservice_task, (void *) cfg);
 }
 
+
 int
 main (int argc, char * const *argv)
 {
@@ -655,4 +684,4 @@ main (int argc, char * const *argv)
   return 1;
 }
 
-/* end of gnunet-transport.c */
+/* end of gnunet-transport-profiler.c */