diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-07-18 15:25:26 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-07-18 15:25:26 +0000 |
commit | e3c1b801f236ea6a513d42c0b104ef0ac30de635 (patch) | |
tree | 718c276321851a4d594193bad9ff92fe0070c662 /src/testbed | |
parent | 87a733eeca4bc8d4058d72714b2751e8d0770514 (diff) | |
download | gnunet-e3c1b801f236ea6a513d42c0b104ef0ac30de635.tar.gz gnunet-e3c1b801f236ea6a513d42c0b104ef0ac30de635.zip |
testbed api peer start
Diffstat (limited to 'src/testbed')
-rw-r--r-- | src/testbed/test_testbed_api_2peers.c | 5 | ||||
-rw-r--r-- | src/testbed/testbed_api.c | 50 | ||||
-rw-r--r-- | src/testbed/testbed_api.h | 5 | ||||
-rw-r--r-- | src/testbed/testbed_api_peers.c | 18 |
4 files changed, 74 insertions, 4 deletions
diff --git a/src/testbed/test_testbed_api_2peers.c b/src/testbed/test_testbed_api_2peers.c index 6378fd9cc..9f55b61eb 100644 --- a/src/testbed/test_testbed_api_2peers.c +++ b/src/testbed/test_testbed_api_2peers.c | |||
@@ -19,8 +19,9 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | /** | 21 | /** |
22 | * @file testbed/test_testbed_api.c | 22 | * @file testbed/test_testbed_api_2peers.c |
23 | * @brief testcases for the testbed api | 23 | * @brief testcases for the testbed api: 2 peers are configured, started and |
24 | * connected together | ||
24 | * @author Sree Harsha Totakura | 25 | * @author Sree Harsha Totakura |
25 | */ | 26 | */ |
26 | 27 | ||
diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c index e03c0e87f..e343daa31 100644 --- a/src/testbed/testbed_api.c +++ b/src/testbed/testbed_api.c | |||
@@ -286,6 +286,51 @@ handle_opsuccess (struct GNUNET_TESTBED_Controller *c, | |||
286 | 286 | ||
287 | 287 | ||
288 | /** | 288 | /** |
289 | * Handler for GNUNET_MESSAGE_TYPE_TESTBED_PEERCREATESUCCESS message from | ||
290 | * controller (testbed service) | ||
291 | * | ||
292 | * @param c the controller handler | ||
293 | * @param msg message received | ||
294 | * @return GNUNET_YES if we can continue receiving from service; GNUNET_NO if | ||
295 | * not | ||
296 | */ | ||
297 | static int | ||
298 | handle_peer_create_success (struct GNUNET_TESTBED_Controller *c, | ||
299 | const struct | ||
300 | GNUNET_TESTBED_PeerCreateSuccessEventMessage *msg) | ||
301 | { | ||
302 | struct GNUNET_TESTBED_Operation *op; | ||
303 | struct GNUNET_TESTBED_Peer *peer; | ||
304 | uint64_t op_id; | ||
305 | |||
306 | GNUNET_assert (sizeof (struct GNUNET_TESTBED_PeerCreateSuccessEventMessage) | ||
307 | == ntohs (msg->header.size)); | ||
308 | op_id = GNUNET_ntohll (msg->operation_id); | ||
309 | for (op = c->op_head; NULL != op; op = op->next) | ||
310 | { | ||
311 | if (op->operation_id == op_id) | ||
312 | break; | ||
313 | } | ||
314 | GNUNET_assert (NULL != op); | ||
315 | peer = op->data; | ||
316 | GNUNET_assert (NULL != peer); | ||
317 | GNUNET_assert (peer->unique_id == ntohl (msg->peer_id)); | ||
318 | if (0 != (c->event_mask & (1L << GNUNET_TESTBED_ET_PEER_START))) | ||
319 | { | ||
320 | struct GNUNET_TESTBED_EventInformation info; | ||
321 | |||
322 | info.details.peer_start.host = peer->host; | ||
323 | info.details.peer_start.peer = peer; | ||
324 | if (NULL != c->cc) | ||
325 | c->cc (c->cc_cls, &info); | ||
326 | } | ||
327 | GNUNET_CONTAINER_DLL_remove (c->op_head, c->op_tail, op); | ||
328 | GNUNET_free (op); | ||
329 | return GNUNET_YES; | ||
330 | } | ||
331 | |||
332 | |||
333 | /** | ||
289 | * Handler for messages from controller (testbed service) | 334 | * Handler for messages from controller (testbed service) |
290 | * | 335 | * |
291 | * @param cls the controller handler | 336 | * @param cls the controller handler |
@@ -318,6 +363,11 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg) | |||
318 | GNUNET_TESTBED_GenericOperationSuccessEventMessage | 363 | GNUNET_TESTBED_GenericOperationSuccessEventMessage |
319 | *) msg); | 364 | *) msg); |
320 | break; | 365 | break; |
366 | case GNUNET_MESSAGE_TYPE_TESTBED_PEERCREATESUCCESS: | ||
367 | status = | ||
368 | handle_peer_create_success | ||
369 | (c, (const struct GNUNET_TESTBED_PeerCreateSuccessEventMessage *)msg); | ||
370 | break; | ||
321 | default: | 371 | default: |
322 | GNUNET_break (0); | 372 | GNUNET_break (0); |
323 | } | 373 | } |
diff --git a/src/testbed/testbed_api.h b/src/testbed/testbed_api.h index 2eaf0227b..994caae8b 100644 --- a/src/testbed/testbed_api.h +++ b/src/testbed/testbed_api.h | |||
@@ -34,6 +34,11 @@ | |||
34 | enum OperationType | 34 | enum OperationType |
35 | { | 35 | { |
36 | /** | 36 | /** |
37 | * Peer start operation | ||
38 | */ | ||
39 | OP_PEER_START, | ||
40 | |||
41 | /** | ||
37 | * Peer destroy operation | 42 | * Peer destroy operation |
38 | */ | 43 | */ |
39 | OP_PEER_DESTROY | 44 | OP_PEER_DESTROY |
diff --git a/src/testbed/testbed_api_peers.c b/src/testbed/testbed_api_peers.c index f2dc4dbe2..8574a0432 100644 --- a/src/testbed/testbed_api_peers.c +++ b/src/testbed/testbed_api_peers.c | |||
@@ -158,8 +158,22 @@ GNUNET_TESTBED_peer_create (struct GNUNET_TESTBED_Controller *controller, | |||
158 | struct GNUNET_TESTBED_Operation * | 158 | struct GNUNET_TESTBED_Operation * |
159 | GNUNET_TESTBED_peer_start (struct GNUNET_TESTBED_Peer *peer) | 159 | GNUNET_TESTBED_peer_start (struct GNUNET_TESTBED_Peer *peer) |
160 | { | 160 | { |
161 | // FIXME: start locally or delegate... | 161 | struct GNUNET_TESTBED_Operation *op; |
162 | GNUNET_break (0); | 162 | struct GNUNET_TESTBED_PeerStartMessage *msg; |
163 | |||
164 | op = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Operation)); | ||
165 | op->operation_id = peer->controller->operation_counter++; | ||
166 | op->type = OP_PEER_START; | ||
167 | op->data = peer; | ||
168 | msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStartMessage)); | ||
169 | msg->header.size = htons (sizeof (struct GNUNET_TESTBED_PeerStartMessage)); | ||
170 | msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER); | ||
171 | msg->peer_id = htonl (peer->unique_id); | ||
172 | msg->operation_id = GNUNET_htonll (op->operation_id); | ||
173 | GNUNET_CONTAINER_DLL_insert_tail (peer->controller->op_head, | ||
174 | peer->controller->op_tail, op); | ||
175 | GNUNET_TESTBED_queue_message_ (peer->controller, | ||
176 | (struct GNUNET_MessageHeader *) msg); | ||
163 | return NULL; | 177 | return NULL; |
164 | } | 178 | } |
165 | 179 | ||