diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-11 22:04:27 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-11 22:04:27 +0000 |
commit | cb11932b64344bc9bde5f5163eefdfc059946c9a (patch) | |
tree | b7f02a55d2ba78322a190617d809733527d21194 /src/transport | |
parent | c34cc2e767ce2e48787148694c810602f19f7d5e (diff) | |
download | gnunet-cb11932b64344bc9bde5f5163eefdfc059946c9a.tar.gz gnunet-cb11932b64344bc9bde5f5163eefdfc059946c9a.zip |
cb wrapper for connecting peers
Diffstat (limited to 'src/transport')
-rw-r--r-- | src/transport/test_transport_testing.c | 21 | ||||
-rw-r--r-- | src/transport/transport-testing.c | 66 | ||||
-rw-r--r-- | src/transport/transport-testing.h | 12 |
3 files changed, 83 insertions, 16 deletions
diff --git a/src/transport/test_transport_testing.c b/src/transport/test_transport_testing.c index 1a176c129..c67d1b27e 100644 --- a/src/transport/test_transport_testing.c +++ b/src/transport/test_transport_testing.c | |||
@@ -84,31 +84,24 @@ run (void *cls, | |||
84 | const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) | 84 | const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) |
85 | { | 85 | { |
86 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n"); | 86 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting peer\n"); |
87 | p = GNUNET_TRANSPORT_TESTING_start_peer("test_quota_compliance_tcp_peer1.conf"); | 87 | p = GNUNET_TRANSPORT_TESTING_start_peer("test_quota_compliance_tcp_peer1.conf", |
88 | ¬ify_receive, | ||
89 | ¬ify_connect, | ||
90 | ¬ify_disconnect, | ||
91 | NULL); | ||
88 | 92 | ||
89 | if (p != NULL) | 93 | if (p != NULL) |
90 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was successfully started\n"); | 94 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was successfully started\n"); |
91 | else | 95 | else |
92 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was not started successfully\n"); | 96 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer was not started successfully\n"); |
93 | GNUNET_assert (p != NULL); | 97 | GNUNET_assert (p != NULL); |
94 | |||
95 | |||
96 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tConnecting to transport service\n"); | ||
97 | GNUNET_assert (p->th == NULL); | ||
98 | p->th = GNUNET_TRANSPORT_connect(p->cfg, NULL, | ||
99 | NULL, | ||
100 | ¬ify_receive, | ||
101 | ¬ify_connect, | ||
102 | ¬ify_disconnect); | ||
103 | GNUNET_assert (p->th != NULL); | 98 | GNUNET_assert (p->th != NULL); |
104 | 99 | ||
105 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\tDisconnecting to transport service\n"); | ||
106 | GNUNET_TRANSPORT_disconnect(p->th); | ||
107 | |||
108 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peer\n"); | 100 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peer\n"); |
101 | |||
109 | GNUNET_TRANSPORT_TESTING_stop_peer(p); | 102 | GNUNET_TRANSPORT_TESTING_stop_peer(p); |
110 | 103 | ||
111 | GNUNET_free (p); | 104 | |
112 | } | 105 | } |
113 | 106 | ||
114 | int | 107 | int |
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 | ||
37 | static void | ||
38 | notify_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 | |||
53 | static void | ||
54 | notify_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 | |||
66 | static void | ||
67 | notify_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 | ||
38 | static void | 83 | static void |
39 | exchange_hello_last (void *cls, | 84 | exchange_hello_last (void *cls, |
@@ -95,7 +140,11 @@ try_connect (void *cls, | |||
95 | } | 140 | } |
96 | 141 | ||
97 | struct PeerContext * | 142 | struct PeerContext * |
98 | GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname) | 143 | GNUNET_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 | ¬ify_receive, | ||
169 | ¬ify_connect, | ||
170 | ¬ify_disconnect); | ||
171 | GNUNET_assert (p->th != NULL); | ||
112 | return p; | 172 | return p; |
113 | } | 173 | } |
114 | 174 | ||
115 | void | 175 | void |
116 | GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * p) | 176 | GNUNET_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 | ||
134 | void | 198 | void |
diff --git a/src/transport/transport-testing.h b/src/transport/transport-testing.h index 2c45ca67c..8e67944ba 100644 --- a/src/transport/transport-testing.h +++ b/src/transport/transport-testing.h | |||
@@ -41,13 +41,23 @@ struct PeerContext | |||
41 | struct GNUNET_TRANSPORT_Handle *th; | 41 | struct GNUNET_TRANSPORT_Handle *th; |
42 | struct GNUNET_PeerIdentity id; | 42 | struct GNUNET_PeerIdentity id; |
43 | struct GNUNET_OS_Process *arm_proc; | 43 | struct GNUNET_OS_Process *arm_proc; |
44 | |||
45 | GNUNET_TRANSPORT_ReceiveCallback rec; | ||
46 | GNUNET_TRANSPORT_NotifyConnect nc; | ||
47 | GNUNET_TRANSPORT_NotifyDisconnect nd; | ||
48 | void * cb_cls; | ||
49 | |||
44 | char * servicehome; | 50 | char * servicehome; |
45 | }; | 51 | }; |
46 | 52 | ||
47 | typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1, struct PeerContext * p2, void *cls); | 53 | typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1, struct PeerContext * p2, void *cls); |
48 | 54 | ||
49 | struct PeerContext * | 55 | struct PeerContext * |
50 | GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname); | 56 | GNUNET_TRANSPORT_TESTING_start_peer (const char * cfgname, |
57 | GNUNET_TRANSPORT_ReceiveCallback rec, | ||
58 | GNUNET_TRANSPORT_NotifyConnect nc, | ||
59 | GNUNET_TRANSPORT_NotifyDisconnect nd, | ||
60 | void * cb_cls); | ||
51 | 61 | ||
52 | void | 62 | void |
53 | GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * pc); | 63 | GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext * pc); |