removing remenants of abstract unix domain socket handling, this finishes addressing...
[oweals/gnunet.git] / src / testbed / gnunet-service-testbed.h
index b17c3d7818fe11402d19709a1790cef05d491a81..55861faba0fbd468d143bf0accdd913360391e48 100644 (file)
@@ -4,7 +4,7 @@
 
   GNUnet is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published
-  by the Free Software Foundation; either version 2, or (at your
+  by the Free Software Foundation; either version 3, or (at your
   option) any later version.
 
   GNUnet is distributed in the hope that it will be useful, but
@@ -317,6 +317,11 @@ struct ForwardedOverlayConnectContext
    */
   struct GNUNET_MessageHeader *orig_msg;
 
+  /**
+   * The client handle
+   */
+  struct GNUNET_SERVER_Client *client;
+
   /**
    * The id of the operation which created this context information
    */
@@ -339,34 +344,12 @@ struct ForwardedOverlayConnectContext
 };
 
 
-/**
- * The type for data structures which commonly arrive at the slave_event_callback
- */
-enum ClosureType
-{
-  /**
-   * Type for RegisteredHostContext closures
-   */
-  CLOSURE_TYPE_RHC = 1,
-
-  /**
-   * Type for LinkControllersForwardingContext closures
-   */
-  CLOSURE_TYPE_LCF
-};
-
-
 /**
  * This context information will be created for each host that is registered at
  * slave controllers during overlay connects.
  */
 struct RegisteredHostContext
 {
-  /**
-   * The type of this data structure. Set this to CLOSURE_TYPE_RHC
-   */
-  enum ClosureType type;
-
   /**
    * The host which is being registered
    */
@@ -377,26 +360,6 @@ struct RegisteredHostContext
    */
   struct GNUNET_TESTBED_Host *host;
 
-  /**
-   * The gateway to which this operation is forwarded to
-   */
-  struct Slave *gateway;
-
-  /**
-   * The gateway through which peer2's controller can be reached
-   */
-  struct Slave *gateway2;
-
-  /**
-   * Handle for sub-operations
-   */
-  struct GNUNET_TESTBED_Operation *sub_op;
-
-  /**
-   * The client which initiated the link controller operation
-   */
-  struct GNUNET_SERVER_Client *client;
-
   /**
    * Head of the ForwardedOverlayConnectContext DLL
    */
@@ -418,21 +381,10 @@ struct RegisteredHostContext
      */
     RHC_INIT = 0,
 
-    /**
-     * State where we attempt to get peer2's controller configuration
-     */
-    RHC_GET_CFG,
-
-    /**
-     * State where we attempt to link the controller of peer 1 to the controller
-     * of peer2
-     */
-    RHC_LINK,
-
     /**
      * State where we attempt to do the overlay connection again
      */
-    RHC_OL_CONNECT
+    RHC_DONE
   } state;
 
 };
@@ -460,7 +412,7 @@ struct HandlerContext_ShutdownPeers
 /**
  * Our configuration
  */
-struct GNUNET_CONFIGURATION_Handle *our_config;
+extern struct GNUNET_CONFIGURATION_Handle *GST_config;
 
 /**
  * The master context; generated with the first INIT message
@@ -502,6 +454,11 @@ const extern struct GNUNET_TIME_Relative GST_timeout;
  */
 extern unsigned int GST_peer_list_size;
 
+/**
+ * The current number of peers running locally under this controller
+ */
+extern unsigned int GST_num_local_peers;
+
 /**
  * The size of the host list
  */
@@ -512,6 +469,18 @@ extern unsigned int GST_host_list_size;
  */
 extern char *GST_stats_dir;
 
+/**
+ * Condition to check if host id is valid
+ */
+#define VALID_HOST_ID(id) \
+  ( ((id) < GST_host_list_size) && (NULL != GST_host_list[id]) )
+
+/**
+ * Condition to check if peer id is valid
+ */
+#define VALID_PEER_ID(id) \
+  ( ((id) < GST_peer_list_size) && (NULL != GST_peer_list[id]) )
+
 
 /**
  * Similar to GNUNET_array_grow(); however instead of calling GNUNET_array_grow()
@@ -752,6 +721,20 @@ GST_handle_manage_peer_service (void *cls, struct GNUNET_SERVER_Client *client,
                                 const struct GNUNET_MessageHeader *message);
 
 
+/**
+ * Handler for GNUNET_MESSAGE_TYPDE_TESTBED_RECONFIGURE_PEER type messages.
+ * Should stop the peer asyncronously, destroy it and create it again with the
+ * new configuration.
+ *
+ * @param cls NULL
+ * @param client identification of the client
+ * @param message the actual message
+ */
+void
+GST_handle_peer_reconfigure (void *cls, struct GNUNET_SERVER_Client *client,
+                             const struct GNUNET_MessageHeader *message);
+
+
 /**
  * Frees the ManageServiceContext queue
  */
@@ -805,6 +788,13 @@ void
 GST_free_roccq ();
 
 
+/**
+ * Cleans up the Peer reconfigure context list
+ */
+void
+GST_free_prcq ();
+
+
 /**
  * Initializes the cache
  *