-doxygen
[oweals/gnunet.git] / src / transport / gnunet-service-transport.h
index 544b605074d4102cf98833309410f0f27a9c8dd8..66da0163e894880f8aec786ac103e4e9aec3e6fa 100644 (file)
 #ifndef GNUNET_SERVICE_TRANSPORT_H
 #define GNUNET_SERVICE_TRANSPORT_H
 
+#include "gnunet_util_lib.h"
 #include "gnunet_statistics_service.h"
-#include "gnunet_transport_plugins.h"
 #include "gnunet_transport_service.h"
-#include "gnunet_util_lib.h"
+
+#define VERBOSE_VALIDATION GNUNET_YES
 
 /**
  * Statistics handle.
@@ -46,6 +47,78 @@ extern const struct GNUNET_CONFIGURATION_Handle *GST_cfg;
  */
 extern struct GNUNET_PeerIdentity GST_my_identity;
 
+/**
+ * Handle to peerinfo service.
+ */
+extern struct GNUNET_PEERINFO_Handle *GST_peerinfo;
+
+/**
+ * Our private key.
+ */
+extern struct GNUNET_CRYPTO_EddsaPrivateKey *GST_my_private_key;
+
+/**
+ * ATS handle.
+ */
+extern struct GNUNET_ATS_SchedulingHandle *GST_ats;
+
+/**
+ * Function called by the transport for each received message.
+ * This function should also be called with "NULL" for the
+ * message to signal that the other peer disconnected.
+ *
+ * @param cls closure, const char* with the name of the plugin we received the message from
+ * @param peer (claimed) identity of the other peer
+ * @param message the message, NULL if we only care about
+ *                learning about the delay until we should receive again -- FIXME!
+ * @param session identifier used for this session (NULL for plugins
+ *                that do not offer bi-directional communication to the sender
+ *                using the same "connection")
+ * @param sender_address binary address of the sender (if we established the
+ *                connection or are otherwise sure of it; should be NULL
+ *                for inbound TCP/UDP connections since it it not clear
+ *                that we could establish ourselves a connection to that
+ *                IP address and get the same system)
+ * @param sender_address_len number of bytes in sender_address
+ * @return how long the plugin should wait until receiving more data
+ *         (plugins that do not support this, can ignore the return value)
+ */
+struct GNUNET_TIME_Relative
+GST_receive_callback (void *cls,
+                     const struct GNUNET_PeerIdentity *peer,
+                     const struct GNUNET_MessageHeader *message,
+                     struct Session *session,
+                     const char *sender_address,
+                     uint16_t sender_address_len);
+
+
+/**
+ * Notify ATS about the new address including the network this address is
+ * located in.
+ *
+ * @param address the address
+ * @param session the session
+ */
+void
+GST_ats_add_address (const struct GNUNET_HELLO_Address *address,
+                                                                                struct Session *session);
+
+
+/**
+ * Notify ATS about property changes to an address
+ *
+ * @param peer the peer
+ * @param address the address
+ * @param session the session
+ * @param ats performance information
+ * @param ats_count number of elements in ats
+ */
+void
+GST_ats_update_metrics (const struct GNUNET_PeerIdentity *peer,
+                       const struct GNUNET_HELLO_Address *address,
+                       struct Session *session,
+                       const struct GNUNET_ATS_Information *ats,
+                       uint32_t ats_count);
 
 #endif
 /* end of file gnunet-service-transport_plugins.h */