aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed_api_peers.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-09-09 13:46:21 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-09-09 13:46:21 +0000
commite418b158990b8368d4577edc17c75683bb9e087c (patch)
tree94c970fb413547cc24e1d7f12d9949caae704d6c /src/testbed/testbed_api_peers.c
parent2db24ba3a4dc97e08c9eb2c3d0723ab445dcf0c3 (diff)
downloadgnunet-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.c34
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 =