aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-07-18 15:42:01 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-07-18 15:42:01 +0000
commit59e9b29052d1fc7813e0d3bad83457fd42ce3b3d (patch)
treebeda32659bf5934eb3634edd82ae666ed36c5b58
parent913150a8cd81a0998c34669e877b82de5176f823 (diff)
downloadgnunet-59e9b29052d1fc7813e0d3bad83457fd42ce3b3d.tar.gz
gnunet-59e9b29052d1fc7813e0d3bad83457fd42ce3b3d.zip
peer create handling at service
-rw-r--r--src/testbed/gnunet-service-testbed.c47
1 files changed, 45 insertions, 2 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c
index 6aafd1b60..3fef52354 100644
--- a/src/testbed/gnunet-service-testbed.c
+++ b/src/testbed/gnunet-service-testbed.c
@@ -1260,6 +1260,8 @@ handle_peer_destroy (void *cls,
1260 { 1260 {
1261 GNUNET_break (0); 1261 GNUNET_break (0);
1262 /* Reply with failure event message */ 1262 /* Reply with failure event message */
1263 GNUNET_SERVER_receive_done (client, GNUNET_OK);
1264 return;
1263 } 1265 }
1264 GNUNET_TESTING_peer_destroy (peer_list[peer_id]->peer); 1266 GNUNET_TESTING_peer_destroy (peer_list[peer_id]->peer);
1265 GNUNET_CONFIGURATION_destroy (peer_list[peer_id]->cfg); 1267 GNUNET_CONFIGURATION_destroy (peer_list[peer_id]->cfg);
@@ -1282,8 +1284,47 @@ handle_peer_destroy (void *cls,
1282 reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_GENERICOPSUCCESS); 1284 reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_GENERICOPSUCCESS);
1283 reply->header.size = htons (reply_size); 1285 reply->header.size = htons (reply_size);
1284 reply->operation_id = msg->operation_id; 1286 reply->operation_id = msg->operation_id;
1285 queue_message (client, (struct GNUNET_MessageHeader *) reply); 1287 queue_message (client, &reply->header);
1286 1288 GNUNET_SERVER_receive_done (client, GNUNET_OK);
1289}
1290
1291
1292/**
1293 * Message handler for GNUNET_MESSAGE_TYPE_TESTBED_DESTROYPEER messages
1294 *
1295 * @param cls NULL
1296 * @param client identification of the client
1297 * @param message the actual message
1298 */
1299static void
1300handle_peer_start (void *cls,
1301 struct GNUNET_SERVER_Client *client,
1302 const struct GNUNET_MessageHeader *message)
1303{
1304 const struct GNUNET_TESTBED_PeerStartMessage *msg;
1305 struct GNUNET_TESTBED_PeerCreateSuccessEventMessage *reply;
1306 uint32_t peer_id;
1307
1308 GNUNET_assert (ntohs (message->size)
1309 == sizeof (struct GNUNET_TESTBED_PeerStartMessage));
1310 msg = (const struct GNUNET_TESTBED_PeerStartMessage *) message;
1311 peer_id = ntohl (msg->peer_id);
1312 if ((peer_id >= peer_list_size)
1313 || (NULL == peer_list[peer_id])
1314 || (GNUNET_OK != GNUNET_TESTING_peer_start (peer_list[peer_id]->peer)))
1315 {
1316 GNUNET_break (0);
1317 /* FIXME: reply with failure message */
1318 GNUNET_SERVER_receive_done (client, GNUNET_OK);
1319 return;
1320 }
1321 reply = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerCreateSuccessEventMessage));
1322 reply->header.size = htons (sizeof (struct GNUNET_TESTBED_PeerCreateSuccessEventMessage));
1323 reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_PEERCREATESUCCESS);
1324 reply->peer_id = htonl (peer_id);
1325 reply->operation_id = msg->operation_id;
1326 queue_message (client, &reply->header);
1327 GNUNET_SERVER_receive_done (client, GNUNET_OK);
1287} 1328}
1288 1329
1289 1330
@@ -1451,6 +1492,8 @@ testbed_run (void *cls,
1451 {&handle_peer_create, NULL, GNUNET_MESSAGE_TYPE_TESTBED_CREATEPEER, 0}, 1492 {&handle_peer_create, NULL, GNUNET_MESSAGE_TYPE_TESTBED_CREATEPEER, 0},
1452 {&handle_peer_destroy, NULL, GNUNET_MESSAGE_TYPE_TESTBED_DESTROYPEER, 1493 {&handle_peer_destroy, NULL, GNUNET_MESSAGE_TYPE_TESTBED_DESTROYPEER,
1453 sizeof (struct GNUNET_TESTBED_PeerDestroyMessage)}, 1494 sizeof (struct GNUNET_TESTBED_PeerDestroyMessage)},
1495 {&handle_peer_start, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER,
1496 sizeof (struct GNUNET_TESTBED_PeerStartMessage)},
1454 {NULL} 1497 {NULL}
1455 }; 1498 };
1456 1499