not needed
[oweals/gnunet.git] / src / dv / dv.h
index f18819a3ae6697db9d17aaff5f03ad64336e4e34..10b531cedc0e9efcae5a5aeeccd2e7698bd20653 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
 
      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
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
 #include "gnunet_common.h"
 
 #define DEBUG_DV_GOSSIP GNUNET_NO
 #include "gnunet_common.h"
 
 #define DEBUG_DV_GOSSIP GNUNET_NO
-#define DEBUG_DV_GOSSIP_RECEIPT GNUNET_YES
+#define DEBUG_DV_GOSSIP_SEND GNUNET_NO
+#define DEBUG_DV_GOSSIP_RECEIPT GNUNET_NO
+#define DEBUG_DV_MESSAGES GNUNET_NO
 #define DEBUG_DV GNUNET_NO
 #define DEBUG_DV GNUNET_NO
-#define DEBUG_DV_API GNUNET_YES
+#define DEBUG_DV_PEER_NUMBERS GNUNET_NO
+#define DEBUG_MESSAGE_DROP GNUNET_NO
 
 typedef void (*GNUNET_DV_MessageReceivedHandler) (void *cls,
                                                   struct GNUNET_PeerIdentity *sender,
 
 typedef void (*GNUNET_DV_MessageReceivedHandler) (void *cls,
                                                   struct GNUNET_PeerIdentity *sender,
@@ -43,7 +46,7 @@ typedef void (*GNUNET_DV_MessageReceivedHandler) (void *cls,
 
 /**
  * DV Message, contains a message that was received
 
 /**
  * DV Message, contains a message that was received
- * via DV for this peer!
+ * via DV for this peer! Internal.
  *
  * Sender address is copied to the end of this struct,
  * followed by the actual message received.
  *
  * Sender address is copied to the end of this struct,
  * followed by the actual message received.
@@ -61,7 +64,7 @@ struct GNUNET_DV_MessageReceived
   struct GNUNET_PeerIdentity sender;
 
   /**
   struct GNUNET_PeerIdentity sender;
 
   /**
-   * The message that was sent
+   * The length of the message that was sent (appended to this end of struct)
    */
   uint32_t msg_len;
 
    */
   uint32_t msg_len;
 
@@ -70,16 +73,12 @@ struct GNUNET_DV_MessageReceived
    */
   uint32_t distance;
 
    */
   uint32_t distance;
 
-  /**
-   * Length of the sender address, appended to end of this message
-   */
-  uint32_t sender_address_len;
-
 };
 
 
 /**
  * DV Message, indicates that we have learned of a new DV level peer.
 };
 
 
 /**
  * DV Message, indicates that we have learned of a new DV level peer.
+ * Internal.
  *
  * Sender address is copied to the end of this struct.
  */
  *
  * Sender address is copied to the end of this struct.
  */
@@ -112,9 +111,32 @@ struct GNUNET_DV_ConnectMessage
 
 };
 
 
 };
 
+/**
+ * Message to return result from a send attempt.
+ * Internal.
+ */
+struct GNUNET_DV_SendResultMessage
+{
+  /**
+   * Type: GNUNET_MESSAGE_TYPE_DV_SEND_RESULT
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * Unique ID for attempted sent message.
+   */
+  uint32_t uid;
+
+  /**
+   * Result of attempted send, 0 for send okay,
+   * 1 for failure of any reason.
+   */
+  uint32_t result;
+};
 
 /**
 
 /**
- * Message to send a message over DV via a specific peer
+ * Message to send a message over DV via a specific peer.
+ * Internal.
  */
 struct GNUNET_DV_SendMessage
 {
  */
 struct GNUNET_DV_SendMessage
 {
@@ -129,14 +151,14 @@ struct GNUNET_DV_SendMessage
   struct GNUNET_PeerIdentity target;
 
   /**
   struct GNUNET_PeerIdentity target;
 
   /**
-   * The size of the msgbuf
+   * Message priority
    */
    */
-  uint32_t msgbuf_size;
+  uint32_t priority;
 
   /**
 
   /**
-   * Message priority
+   * Unique ID for this message, for confirm callback.
    */
    */
-  uint32_t priority;
+  uint32_t uid;
 
   /**
    * How long can we delay sending?
 
   /**
    * How long can we delay sending?
@@ -171,7 +193,7 @@ typedef struct
   /**
    * Cost from received from node to neighbor node, takes distance into account
    */
   /**
    * Cost from received from node to neighbor node, takes distance into account
    */
-  unsigned int cost GNUNET_PACKED;
+  uint32_t cost GNUNET_PACKED;
 
   /**
    * Identity of neighbor we learned information about
 
   /**
    * Identity of neighbor we learned information about
@@ -197,27 +219,54 @@ typedef struct
 {
   struct GNUNET_MessageHeader header;
 
 {
   struct GNUNET_MessageHeader header;
 
+  /**
+   * Unique ID for this message.  Will be zero unless
+   * message tracking is desired.
+   */
+  uint32_t uid GNUNET_PACKED;
+
   /**
    * Identity of peer that ultimately sent the message.
    * Should be looked up in the set of 'neighbor_id's of
    * the referring peer.
    */
   /**
    * Identity of peer that ultimately sent the message.
    * Should be looked up in the set of 'neighbor_id's of
    * the referring peer.
    */
-  unsigned int sender GNUNET_PACKED;
+  uint32_t sender GNUNET_PACKED;
 
   /**
    * Identity of neighbor this message is going to.  Should
    * be looked up in the set of our own identifiers for
    * neighbors!
    */
 
   /**
    * Identity of neighbor this message is going to.  Should
    * be looked up in the set of our own identifiers for
    * neighbors!
    */
-  unsigned int recipient GNUNET_PACKED;
+  uint32_t recipient GNUNET_PACKED;
 
 } p2p_dv_MESSAGE_Data;
 
 
 } p2p_dv_MESSAGE_Data;
 
+/**
+ * Message that gets sent between nodes indicating a peer
+ * was disconnected.
+ */
+typedef struct
+{
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * Identity of neighbor that was disconnected.
+   */
+  uint32_t peer_id GNUNET_PACKED;
+
+} p2p_dv_MESSAGE_Disconnect;
+
 
 struct GNUNET_DV_Handle *
 
 struct GNUNET_DV_Handle *
-GNUNET_DV_connect (struct GNUNET_SCHEDULER_Handle *sched,
-                  const struct GNUNET_CONFIGURATION_Handle *cfg,
+GNUNET_DV_connect (const struct GNUNET_CONFIGURATION_Handle *cfg,
                   GNUNET_DV_MessageReceivedHandler receive_handler,
                   void *receive_handler_cls);
 
                   GNUNET_DV_MessageReceivedHandler receive_handler,
                   void *receive_handler_cls);
 
+/**
+ * Disconnect from the DV service
+ *
+ * @param handle the current handle to the service to disconnect
+ */
+void GNUNET_DV_disconnect(struct GNUNET_DV_Handle *handle);
+
 #endif
 #endif