[Top][All Lists]
[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",
+ ¬ify_receive,
+ ¬ify_connect,
+ ¬ify_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,
- ¬ify_receive,
- ¬ify_connect,
- ¬ify_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,
+ ¬ify_receive,
+ ¬ify_connect,
+ ¬ify_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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r16455 - gnunet/src/transport,
gnunet <=