gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16455 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r16455 - gnunet/src/transport
Date: Fri, 12 Aug 2011 00:04:27 +0200

Author: wachs
Date: 2011-08-12 00:04:27 +0200 (Fri, 12 Aug 2011)
New Revision: 16455

Modified:
   gnunet/src/transport/test_transport_testing.c
   gnunet/src/transport/transport-testing.c
   gnunet/src/transport/transport-testing.h
Log:
cb wrapper for connecting peers


Modified: gnunet/src/transport/test_transport_testing.c
===================================================================
--- gnunet/src/transport/test_transport_testing.c       2011-08-11 18:28:50 UTC 
(rev 16454)
+++ gnunet/src/transport/test_transport_testing.c       2011-08-11 22:04:27 UTC 
(rev 16455)
@@ -84,31 +84,24 @@
      const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n");
-  p = 
GNUNET_TRANSPORT_TESTING_start_peer("test_quota_compliance_tcp_peer1.conf");
+  p = 
GNUNET_TRANSPORT_TESTING_start_peer("test_quota_compliance_tcp_peer1.conf",
+      &notify_receive,
+      &notify_connect,
+      &notify_disconnect,
+      NULL);
 
   if (p != NULL)
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was successfully started\n");
   else
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was not started 
successfully\n");
   GNUNET_assert (p != NULL);
-
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tConnecting to transport service\n");
-  GNUNET_assert (p->th == NULL);
-  p->th = GNUNET_TRANSPORT_connect(p->cfg, NULL,
-                            NULL,
-                            &notify_receive,
-                            &notify_connect,
-                            &notify_disconnect);
   GNUNET_assert (p->th != NULL);
 
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tDisconnecting to transport 
service\n");
-  GNUNET_TRANSPORT_disconnect(p->th);
-
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peer\n");
+
   GNUNET_TRANSPORT_TESTING_stop_peer(p);
 
-  GNUNET_free (p);
+
 }
 
 int

Modified: gnunet/src/transport/transport-testing.c
===================================================================
--- gnunet/src/transport/transport-testing.c    2011-08-11 18:28:50 UTC (rev 
16454)
+++ gnunet/src/transport/transport-testing.c    2011-08-11 22:04:27 UTC (rev 
16455)
@@ -34,8 +34,53 @@
   GNUNET_SCHEDULER_TaskIdentifier tct;
 };
 
+static void
+notify_connect (void *cls,
+                const struct GNUNET_PeerIdentity *peer,
+                const struct GNUNET_TRANSPORT_ATS_Information *ats,
+                uint32_t ats_count)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' connected \n",
+       GNUNET_i2s (peer));
 
+  struct PeerContext * p = cls;
+  if (p == NULL)
+    return;
+  if (p->nc != NULL)
+    p->nc (p->cb_cls, peer, ats, ats_count);
+}
+
 static void
+notify_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' disconnected \n",
+       GNUNET_i2s (peer));
+
+  struct PeerContext * p = cls;
+  if (p == NULL)
+    return;
+  if (p->nd != NULL)
+    p->nd (p->cb_cls, peer);
+}
+
+static void
+notify_receive (void *cls,
+                const struct GNUNET_PeerIdentity *peer,
+                const struct GNUNET_MessageHeader *message,
+                const struct GNUNET_TRANSPORT_ATS_Information *ats,
+                uint32_t ats_count)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving\n");
+
+  struct PeerContext * p = cls;
+  if (p == NULL)
+    return;
+  if (p->rec != NULL)
+    p->rec (p->cb_cls, peer, message, ats, ats_count);
+}
+
+
+static void
 exchange_hello_last (void *cls,
                      const struct GNUNET_MessageHeader *message)
 {
@@ -95,7 +140,11 @@
 }
 
 struct PeerContext *
-GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname)
+GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname,
+    GNUNET_TRANSPORT_ReceiveCallback rec,
+    GNUNET_TRANSPORT_NotifyConnect nc,
+    GNUNET_TRANSPORT_NotifyDisconnect nd,
+    void * cb_cls)
 {
   struct PeerContext * p = GNUNET_malloc (sizeof (struct PeerContext));
 
@@ -109,12 +158,26 @@
   p->arm_proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm",
                                         "gnunet-service-arm",
                                         "-c", cfgname, NULL);
+  p->nc = nc;
+  p->nd = nd;
+  p->rec = rec;
+  p->cb_cls = cb_cls;
+
+  p->th = GNUNET_TRANSPORT_connect(p->cfg, NULL,
+                            p,
+                            &notify_receive,
+                            &notify_connect,
+                            &notify_disconnect);
+  GNUNET_assert (p->th != NULL);
   return p;
 }
 
 void
 GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * p)
 {
+  if (p->th != NULL)
+    GNUNET_TRANSPORT_disconnect(p->th);
+
   if (NULL != p->arm_proc)
     {
       if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM))
@@ -129,6 +192,7 @@
     GNUNET_DISK_directory_remove (p->servicehome);
     GNUNET_free(p->servicehome);
     }
+  GNUNET_free (p);
 }
 
 void

Modified: gnunet/src/transport/transport-testing.h
===================================================================
--- gnunet/src/transport/transport-testing.h    2011-08-11 18:28:50 UTC (rev 
16454)
+++ gnunet/src/transport/transport-testing.h    2011-08-11 22:04:27 UTC (rev 
16455)
@@ -41,13 +41,23 @@
   struct GNUNET_TRANSPORT_Handle *th;
   struct GNUNET_PeerIdentity id;
   struct GNUNET_OS_Process *arm_proc;
+
+  GNUNET_TRANSPORT_ReceiveCallback rec;
+  GNUNET_TRANSPORT_NotifyConnect nc;
+  GNUNET_TRANSPORT_NotifyDisconnect nd;
+  void * cb_cls;
+
   char * servicehome;
 };
 
 typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1, 
struct PeerContext * p2, void *cls);
 
 struct PeerContext *
-GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname);
+GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname,
+    GNUNET_TRANSPORT_ReceiveCallback rec,
+    GNUNET_TRANSPORT_NotifyConnect nc,
+    GNUNET_TRANSPORT_NotifyDisconnect nd,
+    void * cb_cls);
 
 void
 GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * pc);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]