diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-09 13:46:21 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-09 13:46:21 +0000 |
commit | e418b158990b8368d4577edc17c75683bb9e087c (patch) | |
tree | 94c970fb413547cc24e1d7f12d9949caae704d6c /src/testbed/testbed_api_peers.c | |
parent | 2db24ba3a4dc97e08c9eb2c3d0723ab445dcf0c3 (diff) | |
download | gnunet-e418b158990b8368d4577edc17c75683bb9e087c.tar.gz gnunet-e418b158990b8368d4577edc17c75683bb9e087c.zip |
implemented continuations to testbed peer start/stop API
Diffstat (limited to 'src/testbed/testbed_api_peers.c')
-rw-r--r-- | src/testbed/testbed_api_peers.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/testbed/testbed_api_peers.c b/src/testbed/testbed_api_peers.c index 86bc6f2e2..fef701f91 100644 --- a/src/testbed/testbed_api_peers.c +++ b/src/testbed/testbed_api_peers.c | |||
@@ -146,11 +146,14 @@ opstart_peer_start (void *cls) | |||
146 | { | 146 | { |
147 | struct OperationContext *opc = cls; | 147 | struct OperationContext *opc = cls; |
148 | struct GNUNET_TESTBED_PeerStartMessage *msg; | 148 | struct GNUNET_TESTBED_PeerStartMessage *msg; |
149 | struct PeerEventData *data; | ||
149 | struct GNUNET_TESTBED_Peer *peer; | 150 | struct GNUNET_TESTBED_Peer *peer; |
150 | 151 | ||
151 | GNUNET_assert (OP_PEER_START == opc->type); | 152 | GNUNET_assert (OP_PEER_START == opc->type); |
152 | GNUNET_assert (NULL != opc->data); | 153 | GNUNET_assert (NULL != opc->data); |
153 | peer = opc->data; | 154 | data = opc->data; |
155 | GNUNET_assert (NULL != data->peer); | ||
156 | peer = data->peer; | ||
154 | GNUNET_assert ((PS_CREATED == peer->state) || (PS_STOPPED == peer->state)); | 157 | GNUNET_assert ((PS_CREATED == peer->state) || (PS_STOPPED == peer->state)); |
155 | opc->state = OPC_STATE_STARTED; | 158 | opc->state = OPC_STATE_STARTED; |
156 | msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStartMessage)); | 159 | msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStartMessage)); |
@@ -174,7 +177,10 @@ oprelease_peer_start (void *cls) | |||
174 | struct OperationContext *opc = cls; | 177 | struct OperationContext *opc = cls; |
175 | 178 | ||
176 | if (OPC_STATE_FINISHED != opc->state) | 179 | if (OPC_STATE_FINISHED != opc->state) |
180 | { | ||
181 | GNUNET_free (opc->data); | ||
177 | GNUNET_CONTAINER_DLL_remove (opc->c->ocq_head, opc->c->ocq_tail, opc); | 182 | GNUNET_CONTAINER_DLL_remove (opc->c->ocq_head, opc->c->ocq_tail, opc); |
183 | } | ||
178 | GNUNET_free (opc); | 184 | GNUNET_free (opc); |
179 | } | 185 | } |
180 | 186 | ||
@@ -189,10 +195,13 @@ opstart_peer_stop (void *cls) | |||
189 | { | 195 | { |
190 | struct OperationContext *opc = cls; | 196 | struct OperationContext *opc = cls; |
191 | struct GNUNET_TESTBED_PeerStopMessage *msg; | 197 | struct GNUNET_TESTBED_PeerStopMessage *msg; |
198 | struct PeerEventData *data; | ||
192 | struct GNUNET_TESTBED_Peer *peer; | 199 | struct GNUNET_TESTBED_Peer *peer; |
193 | 200 | ||
194 | GNUNET_assert (NULL != opc->data); | 201 | GNUNET_assert (NULL != opc->data); |
195 | peer = opc->data; | 202 | data = opc->data; |
203 | GNUNET_assert (NULL != data->peer); | ||
204 | peer = data->peer; | ||
196 | GNUNET_assert (PS_STARTED == peer->state); | 205 | GNUNET_assert (PS_STARTED == peer->state); |
197 | opc->state = OPC_STATE_STARTED; | 206 | opc->state = OPC_STATE_STARTED; |
198 | msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStopMessage)); | 207 | msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStopMessage)); |
@@ -216,7 +225,10 @@ oprelease_peer_stop (void *cls) | |||
216 | struct OperationContext *opc = cls; | 225 | struct OperationContext *opc = cls; |
217 | 226 | ||
218 | if (OPC_STATE_FINISHED != opc->state) | 227 | if (OPC_STATE_FINISHED != opc->state) |
228 | { | ||
229 | GNUNET_free (opc->data); | ||
219 | GNUNET_CONTAINER_DLL_remove (opc->c->ocq_head, opc->c->ocq_tail, opc); | 230 | GNUNET_CONTAINER_DLL_remove (opc->c->ocq_head, opc->c->ocq_tail, opc); |
231 | } | ||
220 | GNUNET_free (opc); | 232 | GNUNET_free (opc); |
221 | } | 233 | } |
222 | 234 | ||
@@ -493,11 +505,15 @@ GNUNET_TESTBED_peer_start (struct GNUNET_TESTBED_Peer *peer, | |||
493 | void *pcc_cls) | 505 | void *pcc_cls) |
494 | { | 506 | { |
495 | struct OperationContext *opc; | 507 | struct OperationContext *opc; |
508 | struct PeerEventData *data; | ||
496 | 509 | ||
497 | // FIXME: keep and call pcc! | 510 | data = GNUNET_malloc (sizeof (struct PeerEventData)); |
511 | data->peer = peer; | ||
512 | data->pcc = pcc; | ||
513 | data->pcc_cls = pcc_cls; | ||
498 | opc = GNUNET_malloc (sizeof (struct OperationContext)); | 514 | opc = GNUNET_malloc (sizeof (struct OperationContext)); |
499 | opc->c = peer->controller; | 515 | opc->c = peer->controller; |
500 | opc->data = peer; | 516 | opc->data = data; |
501 | opc->id = opc->c->operation_counter++; | 517 | opc->id = opc->c->operation_counter++; |
502 | opc->type = OP_PEER_START; | 518 | opc->type = OP_PEER_START; |
503 | opc->op = | 519 | opc->op = |
@@ -525,11 +541,15 @@ GNUNET_TESTBED_peer_stop (struct GNUNET_TESTBED_Peer *peer, | |||
525 | void *pcc_cls) | 541 | void *pcc_cls) |
526 | { | 542 | { |
527 | struct OperationContext *opc; | 543 | struct OperationContext *opc; |
528 | 544 | struct PeerEventData *data; | |
529 | // FIXME: keep and call pcc! | 545 | |
546 | data = GNUNET_malloc (sizeof (struct PeerEventData)); | ||
547 | data->peer = peer; | ||
548 | data->pcc = pcc; | ||
549 | data->pcc_cls = pcc_cls; | ||
530 | opc = GNUNET_malloc (sizeof (struct OperationContext)); | 550 | opc = GNUNET_malloc (sizeof (struct OperationContext)); |
531 | opc->c = peer->controller; | 551 | opc->c = peer->controller; |
532 | opc->data = peer; | 552 | opc->data = data; |
533 | opc->id = opc->c->operation_counter++; | 553 | opc->id = opc->c->operation_counter++; |
534 | opc->type = OP_PEER_STOP; | 554 | opc->type = OP_PEER_STOP; |
535 | opc->op = | 555 | opc->op = |