};
+/**
+ * Data for OperationType OP_PEER_START and OP_PEER_STOP
+ */
+struct PeerEventData
+{
+ /**
+ * The handle of the peer to start
+ */
+ struct GNUNET_TESTBED_Peer *peer;
+
+ /**
+ * The Peer churn callback to call when this operation is completed
+ */
+ GNUNET_TESTBED_PeerChurnCallback pcc;
+
+ /**
+ * Closure for the above callback
+ */
+ void *pcc_cls;
+
+};
+
+
/**
* Data for the OperationType OP_PEER_DESTROY;
*/
struct GNUNET_TESTBED_Peer *peer;
/**
- * The type of peer information requested
+ * The Peer info callback to call when this operation has completed
*/
- enum GNUNET_TESTBED_PeerInformationType pit;
-};
-
-
-/**
- * Data for the OperationType OP_PEER_INFO
- */
-struct PeerInfoData2
-{
+ GNUNET_TESTBED_PeerInfoCallback cb;
+
/**
- * The type of peer information requested
+ * The closure for peer info callback
*/
- enum GNUNET_TESTBED_PeerInformationType pit;
+ void *cb_cls;
/**
- * The data from reply
+ * The type of peer information requested
*/
- union
- {
- /**
- * Configuration handle
- */
- struct GNUNET_CONFIGURATION_Handle *cfg;
-
- /**
- * Peer Identity
- */
- struct GNUNET_PeerIdentity *peer_identity;
- } details;
+ enum GNUNET_TESTBED_PeerInformationType pit;
};
*/
struct OverlayConnectData
{
+
/**
* Peer A to connect to peer B
*/
*/
struct GNUNET_TESTBED_Peer *p2;
+ /**
+ * The operation completion callback to call once this operation is done
+ */
+ GNUNET_TESTBED_OperationCompletionCallback cb;
+
+ /**
+ * The closure for the above callback
+ */
+ void *cb_cls;
+
+ /**
+ * OperationContext for forwarded operations generated when peer1's controller doesn't have the
+ * configuration of peer2's controller for linking laterally to attemp an
+ * overlay connection between peer 1 and peer 2.
+ */
+ struct OperationContext *sub_opc;
+
+ /**
+ * State information for this context data
+ */
+ enum OCDState {
+
+ /**
+ * The initial state
+ */
+ OCD_INIT,
+
+ /**
+ * State where we attempt to acquire peer2's controller's configuration
+ */
+ OCD_CFG_ACQUIRE,
+
+ /**
+ * State where we link peer1's controller to peer2's controller
+ */
+ OCD_LINK_CONTROLLERS,
+
+ /**
+ * State where we re-ask controller of peer1 to attempt an overlay connect
+ * between peer1 and peer2
+ */
+ OCD_REATTEMPT_OVERLAY_CONNECT
+ } state;
+
};
* @param peer_id the id of the peer whose information we have to get
* @param operation_id the ip of the operation that should be represented in
* the message
- * @param
* @return the PeerGetConfigurationMessage
*/
struct GNUNET_TESTBED_PeerGetConfigurationMessage *