switch api
[oweals/gnunet.git] / src / transport / gnunet-service-transport_neighbours.h
index 26b3a11b8fd9fb22b53cdb2b50d87e8ab0dc03dc..8c038ef20452caf0892968f24ffe80f056bf1ae3 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "gnunet_statistics_service.h"
 #include "gnunet_transport_service.h"
+#include "gnunet_transport_plugin.h"
 #include "gnunet_util_lib.h"
 
 // TODO:
@@ -78,7 +79,7 @@ GST_neighbours_test_connected (const struct GNUNET_PeerIdentity *target);
  * Function called after the transmission is done.
  *
  * @param cls closure
- * @param success GNUNET_OK on success, GNUNET_NO on failure
+ * @param success GNUNET_OK on success, GNUNET_NO on failure, GNUNET_SYSERR if we're not connected
  */
 typedef void (*GST_NeighbourSendContinuation)(void *cls,
                                              int success);
@@ -89,12 +90,16 @@ typedef void (*GST_NeighbourSendContinuation)(void *cls,
  *
  * @param target destination
  * @param msg message to send
+ * @param msg_size number of bytes in msg
+ * @param timeout when to fail with timeout
  * @param cont function to call when done
  * @param cont_cls closure for 'cont'
  */
 void
 GST_neighbours_send (const struct GNUNET_PeerIdentity *target,
-                    const struct GNUNET_MessageHeader *msg,
+                    const void *msg,
+                    size_t msg_size,
+                    struct GNUNET_TIME_Relative timeout,
                     GST_NeighbourSendContinuation cont,
                     void *cont_cls);
 
@@ -144,7 +149,7 @@ GST_neighbours_iterate (GST_NeighbourIterator cb,
 
 
 /**
- * We have received a PONG.  Update lifeness of the neighbour.
+ * We have received a CONNECT.  Set the peer to connected.
  *
  * @param sender peer sending the PONG
  * @param hdr the PONG message (presumably)
@@ -152,33 +157,40 @@ GST_neighbours_iterate (GST_NeighbourIterator cb,
  * @param sender_address address of the other peer, NULL if other peer
  *                       connected to us
  * @param sender_address_len number of bytes in sender_address
+ * @param ats performance data
+ * @param ats_count number of entries in ats (excluding 0-termination)
  * @return GNUNET_OK if the message was well-formed, GNUNET_SYSERR if not
  */
 int
-GST_neighbours_handle_pong (const struct GNUNET_PeerIdentity *sender,
-                           const struct GNUNET_MessageHeader *hdr,
-                           const char *plugin_name,
-                           const void *sender_address,
-                           size_t sender_address_len);
+GST_neighbours_handle_connect (const struct GNUNET_PeerIdentity *sender,
+                              const struct GNUNET_MessageHeader *hdr,
+                              const char *plugin_name,
+                              const void *sender_address,
+                              size_t sender_address_len,
+                              struct Session *session,
+                              const struct GNUNET_TRANSPORT_ATS_Information *ats,
+                              uint32_t ats_count);
 
 
 /**
- * We have received a CONNECT.  Set the peer to connected.
+ * For an existing neighbour record, set the active connection to
+ * the given address.
  *
- * @param sender peer sending the PONG
- * @param hdr the PONG message (presumably)
  * @param plugin_name name of transport that delivered the PONG
- * @param sender_address address of the other peer, NULL if other peer
+ * @param address address of the other peer, NULL if other peer
  *                       connected to us
- * @param sender_address_len number of bytes in sender_address
- * @return GNUNET_OK if the message was well-formed, GNUNET_SYSERR if not
+ * @param address_len number of bytes in address
+ * @param ats performance data
+ * @param ats_count number of entries in ats (excluding 0-termination)
  */
-int
-GST_neighbours_handle_connect (const struct GNUNET_PeerIdentity *sender,
-                              const struct GNUNET_MessageHeader *hdr,
-                              const char *plugin_name,
-                              const void *sender_address,
-                              size_t sender_address_len);
+void
+GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer,
+                                 const char *plugin_name,
+                                 const void *address,
+                                 size_t address_len,
+                                 struct Session *session,
+                                 const struct GNUNET_TRANSPORT_ATS_Information *ats,
+                                 uint32_t ats_count);
 
 
 /**