gnunet-svn
[Top][All Lists]
Advanced

[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;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]