guix-env: some update.
[oweals/gnunet.git] / src / testbed / testbed_api.c
index 895800514f7e19ded92e2fcde3643ecf9c2ad895..0e0a5da9c9d4881ae3933f1e2daddfc9e2ed0fde 100644 (file)
@@ -75,7 +75,7 @@ struct ForwardedOperationData
   /**
    * The callback to call when reply is available
    */
-  GNUNET_CLIENT_MessageHandler cc;
+  GNUNET_MQ_MessageCallback cc;
 
   /**
    * The closure for the above callback
@@ -1298,14 +1298,25 @@ handle_barrier_status (void *cls,
   GNUNET_assert (NULL != barrier->cb);
   if ((GNUNET_YES == barrier->echo) &&
       (GNUNET_TESTBED_BARRIERSTATUS_CROSSED == status))
-    GNUNET_TESTBED_queue_message_ (c, GNUNET_copy_message (&msg->header));
-  barrier->cb (barrier->cls, name, barrier, status, emsg);
+    GNUNET_TESTBED_queue_message_ (c,
+                                   GNUNET_copy_message (&msg->header));
+  barrier->cb (barrier->cls,
+               name,
+               barrier,
+               status,
+               emsg);
   if (GNUNET_TESTBED_BARRIERSTATUS_INITIALISED == status)
     return;           /* just initialised; skip cleanup */
 
  cleanup:
   GNUNET_free_non_null (emsg);
-  if (NULL != barrier)
+  /**
+   * Do not remove the barrier if we did not echo the status back; this is
+   * required at the chained testbed controller setup to ensure the only the
+   * test-driver echos the status and the controller hierarchy properly
+   * propagates the status.
+   */
+  if ((NULL != barrier) && (GNUNET_YES == barrier->echo))
     GNUNET_TESTBED_barrier_remove_ (barrier);
 }
 
@@ -1357,7 +1368,7 @@ struct OperationContext *
 GNUNET_TESTBED_forward_operation_msg_ (struct GNUNET_TESTBED_Controller *controller,
                                        uint64_t operation_id,
                                        const struct GNUNET_MessageHeader *msg,
-                                       GNUNET_CLIENT_MessageHandler cc,
+                                       GNUNET_MQ_MessageCallback cc,
                                        void *cc_cls)
 {
   struct OperationContext *opc;
@@ -1549,49 +1560,49 @@ GNUNET_TESTBED_controller_connect (struct GNUNET_TESTBED_Host *host,
                                    GNUNET_TESTBED_ControllerCallback cc,
                                    void *cc_cls)
 {
-  GNUNET_MQ_hd_var_size (add_host_confirm,
-                         GNUNET_MESSAGE_TYPE_TESTBED_ADD_HOST_SUCCESS,
-                         struct GNUNET_TESTBED_HostConfirmedMessage);
-  GNUNET_MQ_hd_fixed_size (peer_conevent,
-                           GNUNET_MESSAGE_TYPE_TESTBED_PEER_CONNECT_EVENT,
-                           struct GNUNET_TESTBED_ConnectionEventMessage);
-  GNUNET_MQ_hd_fixed_size (opsuccess,
-                           GNUNET_MESSAGE_TYPE_TESTBED_GENERIC_OPERATION_SUCCESS,
-                           struct GNUNET_TESTBED_GenericOperationSuccessEventMessage);
-  GNUNET_MQ_hd_var_size (op_fail_event,
-                         GNUNET_MESSAGE_TYPE_TESTBED_OPERATION_FAIL_EVENT,
-                         struct GNUNET_TESTBED_OperationFailureEventMessage);
-  GNUNET_MQ_hd_fixed_size (peer_create_success,
-                           GNUNET_MESSAGE_TYPE_TESTBED_CREATE_PEER_SUCCESS,
-                           struct GNUNET_TESTBED_PeerCreateSuccessEventMessage);
-  GNUNET_MQ_hd_fixed_size (peer_event,
-                           GNUNET_MESSAGE_TYPE_TESTBED_PEER_EVENT,
-                           struct GNUNET_TESTBED_PeerEventMessage);
-  GNUNET_MQ_hd_var_size (peer_config,
-                         GNUNET_MESSAGE_TYPE_TESTBED_PEER_INFORMATION,
-                         struct GNUNET_TESTBED_PeerConfigurationInformationMessage);
-  GNUNET_MQ_hd_var_size (slave_config,
-                         GNUNET_MESSAGE_TYPE_TESTBED_SLAVE_CONFIGURATION,
-                         struct GNUNET_TESTBED_SlaveConfiguration);
-  GNUNET_MQ_hd_var_size (link_controllers_result,
-                         GNUNET_MESSAGE_TYPE_TESTBED_LINK_CONTROLLERS_RESULT,
-                         struct GNUNET_TESTBED_ControllerLinkResponse);
-  GNUNET_MQ_hd_var_size (barrier_status,
-                         GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_STATUS,
-                         const struct GNUNET_TESTBED_BarrierStatusMsg);
   struct GNUNET_TESTBED_Controller *controller
     = GNUNET_new (struct GNUNET_TESTBED_Controller);
   struct GNUNET_MQ_MessageHandler handlers[] = {
-    make_add_host_confirm_handler (controller),
-    make_peer_conevent_handler (controller),
-    make_opsuccess_handler (controller),
-    make_op_fail_event_handler (controller),
-    make_peer_create_success_handler (controller),
-    make_peer_event_handler (controller),
-    make_peer_config_handler (controller),
-    make_slave_config_handler (controller),
-    make_link_controllers_result_handler (controller),
-    make_barrier_status_handler (controller),
+    GNUNET_MQ_hd_var_size (add_host_confirm,
+                           GNUNET_MESSAGE_TYPE_TESTBED_ADD_HOST_SUCCESS,
+                           struct GNUNET_TESTBED_HostConfirmedMessage,
+                           controller),
+    GNUNET_MQ_hd_fixed_size (peer_conevent,
+                             GNUNET_MESSAGE_TYPE_TESTBED_PEER_CONNECT_EVENT,
+                             struct GNUNET_TESTBED_ConnectionEventMessage,
+                             controller),
+    GNUNET_MQ_hd_fixed_size (opsuccess,
+                             GNUNET_MESSAGE_TYPE_TESTBED_GENERIC_OPERATION_SUCCESS,
+                             struct GNUNET_TESTBED_GenericOperationSuccessEventMessage,
+                             controller),
+    GNUNET_MQ_hd_var_size (op_fail_event,
+                           GNUNET_MESSAGE_TYPE_TESTBED_OPERATION_FAIL_EVENT,
+                           struct GNUNET_TESTBED_OperationFailureEventMessage,
+                           controller),
+    GNUNET_MQ_hd_fixed_size (peer_create_success,
+                             GNUNET_MESSAGE_TYPE_TESTBED_CREATE_PEER_SUCCESS,
+                             struct GNUNET_TESTBED_PeerCreateSuccessEventMessage,
+                             controller),
+    GNUNET_MQ_hd_fixed_size (peer_event,
+                             GNUNET_MESSAGE_TYPE_TESTBED_PEER_EVENT,
+                             struct GNUNET_TESTBED_PeerEventMessage,
+                             controller),
+    GNUNET_MQ_hd_var_size (peer_config,
+                           GNUNET_MESSAGE_TYPE_TESTBED_PEER_INFORMATION,
+                           struct GNUNET_TESTBED_PeerConfigurationInformationMessage,
+                           controller),
+    GNUNET_MQ_hd_var_size (slave_config,
+                           GNUNET_MESSAGE_TYPE_TESTBED_SLAVE_CONFIGURATION,
+                           struct GNUNET_TESTBED_SlaveConfiguration,
+                           controller),
+    GNUNET_MQ_hd_var_size (link_controllers_result,
+                           GNUNET_MESSAGE_TYPE_TESTBED_LINK_CONTROLLERS_RESULT,
+                           struct GNUNET_TESTBED_ControllerLinkResponse,
+                           controller),
+    GNUNET_MQ_hd_var_size (barrier_status,
+                           GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_STATUS,
+                           struct GNUNET_TESTBED_BarrierStatusMsg,
+                           controller),
     GNUNET_MQ_handler_end ()
   };
   struct GNUNET_TESTBED_InitMessage *msg;
@@ -1635,7 +1646,7 @@ GNUNET_TESTBED_controller_connect (struct GNUNET_TESTBED_Host *host,
   controller->cc_cls = cc_cls;
   controller->event_mask = event_mask;
   controller->cfg = GNUNET_CONFIGURATION_dup (cfg);
-  controller->mq = GNUNET_CLIENT_connecT (controller->cfg,
+  controller->mq = GNUNET_CLIENT_connect (controller->cfg,
                                           "testbed",
                                           handlers,
                                           &mq_error_handler,