[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22769 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22769 - gnunet/src/testbed |
Date: |
Wed, 18 Jul 2012 23:55:13 +0200 |
Author: harsha
Date: 2012-07-18 23:55:13 +0200 (Wed, 18 Jul 2012)
New Revision: 22769
Modified:
gnunet/src/testbed/gnunet-service-testbed.c
gnunet/src/testbed/testbed_api.h
gnunet/src/testbed/testbed_api_peers.c
Log:
peer_stop and service handle for peerstop message: TODO: handler for peer stop
success
Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-07-18 21:51:46 UTC (rev
22768)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-07-18 21:55:13 UTC (rev
22769)
@@ -1228,7 +1228,7 @@
return;
}
- /* Forward the peer to other host */
+ /* FIXME: Forward the peer to other host */
GNUNET_break (0);
GNUNET_SERVER_receive_done (client, GNUNET_OK);
}
@@ -1259,7 +1259,7 @@
if ((peer_list_size <= peer_id) || (NULL == peer_list[peer_id]))
{
GNUNET_break (0);
- /* Reply with failure event message */
+ /* FIXME: Reply with failure event message or forward to slave controller
*/
GNUNET_SERVER_receive_done (client, GNUNET_OK);
return;
}
@@ -1305,8 +1305,6 @@
struct GNUNET_TESTBED_PeerCreateSuccessEventMessage *reply;
uint32_t peer_id;
- GNUNET_assert (ntohs (message->size)
- == sizeof (struct GNUNET_TESTBED_PeerStartMessage));
msg = (const struct GNUNET_TESTBED_PeerStartMessage *) message;
peer_id = ntohl (msg->peer_id);
if ((peer_id >= peer_list_size)
@@ -1314,7 +1312,7 @@
|| (GNUNET_OK != GNUNET_TESTING_peer_start (peer_list[peer_id]->peer)))
{
GNUNET_break (0);
- /* FIXME: reply with failure message */
+ /* FIXME: reply with failure message or forward to slave controller */
GNUNET_SERVER_receive_done (client, GNUNET_OK);
return;
}
@@ -1329,6 +1327,47 @@
/**
+ * Message handler for GNUNET_MESSAGE_TYPE_TESTBED_DESTROYPEER messages
+ *
+ * @param cls NULL
+ * @param client identification of the client
+ * @param message the actual message
+ */
+static void
+handle_peer_stop (void *cls,
+ struct GNUNET_SERVER_Client *client,
+ const struct GNUNET_MessageHeader *message)
+{
+ const struct GNUNET_TESTBED_PeerStopMessage *msg;
+ struct GNUNET_TESTBED_GenericOperationSuccessEventMessage *reply;
+ uint32_t peer_id;
+
+ msg = (const struct GNUNET_TESTBED_PeerStopMessage *) message;
+ peer_id = ntohl (msg->peer_id);
+ if ((peer_id >= peer_list_size) || (NULL == peer_list[peer_id]))
+ {
+ GNUNET_break (0); /* FIXME: route to slave? */
+ GNUNET_SERVER_receive_done (client, GNUNET_OK);
+ return;
+ }
+ if (GNUNET_OK != GNUNET_TESTING_peer_stop (peer_list[peer_id]->peer))
+ {
+ /* FIXME: return FAILURE message */
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_OK);
+ return;
+ }
+ reply = GNUNET_malloc (sizeof (struct
GNUNET_TESTBED_GenericOperationSuccessEventMessage));
+ reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_GENERICOPSUCCESS);
+ reply->header.size = htons (sizeof (struct
GNUNET_TESTBED_GenericOperationSuccessEventMessage));
+ reply->operation_id = msg->operation_id;
+ reply->event_type = htonl (GNUNET_TESTBED_ET_PEER_STOP);
+ queue_message (client, &reply->header);
+ GNUNET_SERVER_receive_done (client, GNUNET_OK);
+}
+
+
+/**
* Iterator over hash map entries.
*
* @param cls closure
@@ -1494,6 +1533,8 @@
sizeof (struct GNUNET_TESTBED_PeerDestroyMessage)},
{&handle_peer_start, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STARTPEER,
sizeof (struct GNUNET_TESTBED_PeerStartMessage)},
+ {&handle_peer_stop, NULL, GNUNET_MESSAGE_TYPE_TESTBED_STOPPEER,
+ sizeof (struct GNUNET_TESTBED_PeerStopMessage)},
{NULL}
};
Modified: gnunet/src/testbed/testbed_api.h
===================================================================
--- gnunet/src/testbed/testbed_api.h 2012-07-18 21:51:46 UTC (rev 22768)
+++ gnunet/src/testbed/testbed_api.h 2012-07-18 21:55:13 UTC (rev 22769)
@@ -39,6 +39,11 @@
OP_PEER_START,
/**
+ * Peer stop operation
+ */
+ OP_PEER_STOP,
+
+ /**
* Peer destroy operation
*/
OP_PEER_DESTROY
Modified: gnunet/src/testbed/testbed_api_peers.c
===================================================================
--- gnunet/src/testbed/testbed_api_peers.c 2012-07-18 21:51:46 UTC (rev
22768)
+++ gnunet/src/testbed/testbed_api_peers.c 2012-07-18 21:55:13 UTC (rev
22769)
@@ -172,8 +172,7 @@
msg->operation_id = GNUNET_htonll (op->operation_id);
GNUNET_CONTAINER_DLL_insert_tail (peer->controller->op_head,
peer->controller->op_tail, op);
- GNUNET_TESTBED_queue_message_ (peer->controller,
- (struct GNUNET_MessageHeader *) msg);
+ GNUNET_TESTBED_queue_message_ (peer->controller, &msg->header);
return NULL;
}
@@ -189,8 +188,21 @@
struct GNUNET_TESTBED_Operation *
GNUNET_TESTBED_peer_stop (struct GNUNET_TESTBED_Peer *peer)
{
- // FIXME: stop locally or delegate...
- GNUNET_break (0);
+ struct GNUNET_TESTBED_Operation *op;
+ struct GNUNET_TESTBED_PeerStopMessage *msg;
+
+ op = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Operation));
+ op->operation_id = peer->controller->operation_counter++;
+ op->type = OP_PEER_STOP;
+ op->data = peer;
+ msg = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_PeerStopMessage));
+ msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_STOPPEER);
+ msg->header.size = htons (sizeof (struct GNUNET_TESTBED_PeerStopMessage));
+ msg->peer_id = htonl (peer->unique_id);
+ msg->operation_id = GNUNET_htonll (op->operation_id);
+ GNUNET_CONTAINER_DLL_insert_tail (peer->controller->op_head,
+ peer->controller->op_tail, op);
+ GNUNET_TESTBED_queue_message_ (peer->controller, &msg->header);
return NULL;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22769 - gnunet/src/testbed,
gnunet <=