hxing typemap
[oweals/gnunet.git] / src / core / test_core_api.c
index 28805a372546e100d8c9223550b71a9d2ca953fc..7695f9e86b893fe3df79cf5fb744a2493effa5b6 100644 (file)
@@ -34,7 +34,7 @@
 #include "gnunet_scheduler_lib.h"
 #include "gnunet_transport_service.h"
 
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_EXTRA_LOGGING
 
 #define START_ARM GNUNET_YES
 
@@ -46,6 +46,7 @@ struct PeerContext
   struct GNUNET_CORE_Handle *ch;
   struct GNUNET_PeerIdentity id;
   struct GNUNET_TRANSPORT_Handle *th;
+  struct GNUNET_TRANSPORT_GetHelloHandle *ghh;
   struct GNUNET_MessageHeader *hello;
   int connect_status;
 #if START_ARM
@@ -78,7 +79,7 @@ process_hello (void *cls, const struct GNUNET_MessageHeader *message)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Received (my) `%s' from transport service\n", "HELLO");
   GNUNET_assert (message != NULL);
-  if ((p == &p1) && (p2.th != NULL))
+  if ((p == &p1) && (p2.th != NULL))  
     GNUNET_TRANSPORT_offer_hello (p2.th, message, NULL, NULL);
   if ((p == &p2) && (p1.th != NULL))
     GNUNET_TRANSPORT_offer_hello (p1.th, message, NULL, NULL);
@@ -90,11 +91,22 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   GNUNET_assert (ok == 6);
   GNUNET_CORE_disconnect (p1.ch);
+  p1.ch = NULL;
   GNUNET_CORE_disconnect (p2.ch);
-  GNUNET_TRANSPORT_get_hello_cancel (p1.th, &process_hello, &p1);
-  GNUNET_TRANSPORT_get_hello_cancel (p2.th, &process_hello, &p2);
+  p2.ch = NULL;
+  GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
+  p1.ghh = NULL;
+  GNUNET_TRANSPORT_get_hello_cancel (p2.ghh);
+  p2.ghh = NULL;
   GNUNET_TRANSPORT_disconnect (p1.th);
+  p1.th = NULL;
   GNUNET_TRANSPORT_disconnect (p2.th);
+  p2.th = NULL;
+  if (GNUNET_SCHEDULER_NO_TASK != con_task)
+  {
+    GNUNET_SCHEDULER_cancel (con_task);
+    con_task = GNUNET_SCHEDULER_NO_TASK;
+  }
   ok = 0;
 }
 
@@ -118,16 +130,21 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   }
   if (p1.th != NULL)
   {
-    GNUNET_TRANSPORT_get_hello_cancel (p1.th, &process_hello, &p1);
+    GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
     GNUNET_TRANSPORT_disconnect (p1.th);
     p1.th = NULL;
   }
   if (p2.th != NULL)
   {
-    GNUNET_TRANSPORT_get_hello_cancel (p2.th, &process_hello, &p2);
+    GNUNET_TRANSPORT_get_hello_cancel (p2.ghh);
     GNUNET_TRANSPORT_disconnect (p2.th);
     p2.th = NULL;
   }
+  if (GNUNET_SCHEDULER_NO_TASK != con_task)
+  {
+    GNUNET_SCHEDULER_cancel (con_task);
+    con_task = GNUNET_SCHEDULER_NO_TASK;
+  }
   ok = 42;
 }
 
@@ -258,15 +275,15 @@ connect_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
       GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &connect_task,
                                     NULL);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Asking core (1) to connect to peer `%4s'\n",
+              "Asking transport (1) to connect to peer `%4s'\n",
               GNUNET_i2s (&p2.id));
-  GNUNET_CORE_peer_request_connect (p1.ch, &p2.id, NULL, NULL);
+  GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
 }
 
+
 static void
 init_notify (void *cls, struct GNUNET_CORE_Handle *server,
-             const struct GNUNET_PeerIdentity *my_identity,
-             const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *publicKey)
+             const struct GNUNET_PeerIdentity *my_identity)
 {
   struct PeerContext *p = cls;
 
@@ -312,7 +329,7 @@ setup_peer (struct PeerContext *p, const char *cfgname)
   GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname));
   p->th = GNUNET_TRANSPORT_connect (p->cfg, NULL, p, NULL, NULL, NULL);
   GNUNET_assert (p->th != NULL);
-  GNUNET_TRANSPORT_get_hello (p->th, &process_hello, p);
+  p->ghh = GNUNET_TRANSPORT_get_hello (p->th, &process_hello, p);
 }
 
 
@@ -334,6 +351,7 @@ run (void *cls, char *const *args, const char *cfgfile,
                            GNUNET_YES, &outbound_notify, GNUNET_YES, handlers);
 }
 
+
 static void
 stop_arm (struct PeerContext *p)
 {