aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-08-11 22:04:27 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-08-11 22:04:27 +0000
commitcb11932b64344bc9bde5f5163eefdfc059946c9a (patch)
treeb7f02a55d2ba78322a190617d809733527d21194 /src/transport/transport-testing.c
parentc34cc2e767ce2e48787148694c810602f19f7d5e (diff)
downloadgnunet-cb11932b64344bc9bde5f5163eefdfc059946c9a.tar.gz
gnunet-cb11932b64344bc9bde5f5163eefdfc059946c9a.zip
cb wrapper for connecting peers
Diffstat (limited to 'src/transport/transport-testing.c')
-rw-r--r--src/transport/transport-testing.c66
1 files changed, 65 insertions, 1 deletions
diff --git a/src/transport/transport-testing.c b/src/transport/transport-testing.c
index 24cf8a829..910d9a6d8 100644
--- a/src/transport/transport-testing.c
+++ b/src/transport/transport-testing.c
@@ -34,6 +34,51 @@ struct ConnectingContext
34 GNUNET_SCHEDULER_TaskIdentifier tct; 34 GNUNET_SCHEDULER_TaskIdentifier tct;
35}; 35};
36 36
37static void
38notify_connect (void *cls,
39 const struct GNUNET_PeerIdentity *peer,
40 const struct GNUNET_TRANSPORT_ATS_Information *ats,
41 uint32_t ats_count)
42{
43 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' connected \n",
44 GNUNET_i2s (peer));
45
46 struct PeerContext * p = cls;
47 if (p == NULL)
48 return;
49 if (p->nc != NULL)
50 p->nc (p->cb_cls, peer, ats, ats_count);
51}
52
53static void
54notify_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer)
55{
56 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer `%s' disconnected \n",
57 GNUNET_i2s (peer));
58
59 struct PeerContext * p = cls;
60 if (p == NULL)
61 return;
62 if (p->nd != NULL)
63 p->nd (p->cb_cls, peer);
64}
65
66static void
67notify_receive (void *cls,
68 const struct GNUNET_PeerIdentity *peer,
69 const struct GNUNET_MessageHeader *message,
70 const struct GNUNET_TRANSPORT_ATS_Information *ats,
71 uint32_t ats_count)
72{
73 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving\n");
74
75 struct PeerContext * p = cls;
76 if (p == NULL)
77 return;
78 if (p->rec != NULL)
79 p->rec (p->cb_cls, peer, message, ats, ats_count);
80}
81
37 82
38static void 83static void
39exchange_hello_last (void *cls, 84exchange_hello_last (void *cls,
@@ -95,7 +140,11 @@ try_connect (void *cls,
95} 140}
96 141
97struct PeerContext * 142struct PeerContext *
98GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname) 143GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname,
144 GNUNET_TRANSPORT_ReceiveCallback rec,
145 GNUNET_TRANSPORT_NotifyConnect nc,
146 GNUNET_TRANSPORT_NotifyDisconnect nd,
147 void * cb_cls)
99{ 148{
100 struct PeerContext * p = GNUNET_malloc (sizeof (struct PeerContext)); 149 struct PeerContext * p = GNUNET_malloc (sizeof (struct PeerContext));
101 150
@@ -109,12 +158,26 @@ GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname)
109 p->arm_proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", 158 p->arm_proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm",
110 "gnunet-service-arm", 159 "gnunet-service-arm",
111 "-c", cfgname, NULL); 160 "-c", cfgname, NULL);
161 p->nc = nc;
162 p->nd = nd;
163 p->rec = rec;
164 p->cb_cls = cb_cls;
165
166 p->th = GNUNET_TRANSPORT_connect(p->cfg, NULL,
167 p,
168 &notify_receive,
169 &notify_connect,
170 &notify_disconnect);
171 GNUNET_assert (p->th != NULL);
112 return p; 172 return p;
113} 173}
114 174
115void 175void
116GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * p) 176GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * p)
117{ 177{
178 if (p->th != NULL)
179 GNUNET_TRANSPORT_disconnect(p->th);
180
118 if (NULL != p->arm_proc) 181 if (NULL != p->arm_proc)
119 { 182 {
120 if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM)) 183 if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM))
@@ -129,6 +192,7 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * p)
129 GNUNET_DISK_directory_remove (p->servicehome); 192 GNUNET_DISK_directory_remove (p->servicehome);
130 GNUNET_free(p->servicehome); 193 GNUNET_free(p->servicehome);
131 } 194 }
195 GNUNET_free (p);
132} 196}
133 197
134void 198void