*
* @param cls closure
* @param peer which peer was the session for
- * @param session which session is being destoyed
+ * @param session which session is being destroyed
*/
typedef void
(*GNUNET_TRANSPORT_SessionEnd) (void *cls,
const struct GNUNET_PeerIdentity *peer,
struct Session *session);
-
/**
- * Function that will be called whenever the plugin internally
- * creates a new session and hence transport need to tell ATS.
- * This happens when we have a inbound connection we did not
- * initiate.
+ * Plugin tells transport service about a new inbound session
*
- * @param cls closure
- * @param peer peer
- * @param plugin plugin
- * @param address address
- * @param address_len length of the @a address
- * @param session session
- * @param ats ATS information
- * @param ats_count number of entries in @a ats array
+ * @param cls unused
+ * @param address the address
+ * @param session the new session
+ * @param ats ats information
+ * @param ats_count number of @a ats information
*/
typedef void
(*GNUNET_TRANSPORT_SessionStart) (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const char *plugin,
- const void *address,
- uint16_t address_len,
+ struct GNUNET_HELLO_Address *address,
struct Session *session,
const struct GNUNET_ATS_Information *ats,
uint32_t ats_count);
-
/**
* Function called by the transport for each received message.
* This function should also be called with "NULL" for the
*/
typedef struct GNUNET_TIME_Relative
(*GNUNET_TRANSPORT_PluginReceiveCallback) (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_MessageHeader *message,
- struct Session *session,
- const char *sender_address,
- uint16_t sender_address_len);
+ const struct GNUNET_HELLO_Address *address,
+ struct Session *session,
+ const struct GNUNET_MessageHeader *message);
/**
*/
typedef void
(*GNUNET_TRANSPORT_UpdateAddressMetrics) (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const void *address,
- uint16_t address_len,
+ const struct GNUNET_HELLO_Address *address,
struct Session *session,
const struct GNUNET_ATS_Information *ats,
uint32_t ats_count);
* @param cls closure
* @param add_remove should the address added (#GNUNET_YES) or removed (#GNUNET_NO) from the
* set of valid addresses?
- * @param addr one of the addresses of the host
- * the specific address format depends on the transport
- * @param addrlen length of the @a addr
- * @param dest_plugin plugin to use this address with
+ * @param address the address to add or remove
*/
typedef void
-(*GNUNET_TRANSPORT_AddressNotification) (void *cls,
- int add_remove,
- const void *addr,
- size_t addrlen,
- const char *dest_plugin);
+(*GNUNET_TRANSPORT_AddressNotification) (void *cls, int add_remove,
+ const struct GNUNET_HELLO_Address *address);
/**
(*GNUNET_TRANSPORT_DisconnectSessionFunction) (void *cls,
struct Session *session);
+/**
+ * Function that is called to get the keepalive factor.
+ * GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT is divided by this number to
+ * calculate the interval between keepalive packets.
+ *
+ * @param cls closure with the `struct Plugin`
+ * @return keepalive factor
+ */
+typedef unsigned int
+(*GNUNET_TRANSPORT_QueryKeepaliveFactorFunction) (void *cls);
+
/**
* Function that can be called to force a disconnect from the
const struct GNUNET_HELLO_Address *address);
+/**
+ * Function that will be called whenever the transport service wants to
+ * notify the plugin that a session is still active and in use and
+ * therefore the session timeout for this session has to be updated
+ *
+ * @param cls closure
+ * @param peer which peer was the session for
+ * @param session which session is being updated
+ */
+typedef void
+(*GNUNET_TRANSPORT_UpdateSessionTimeout) (void *cls,
+ const struct GNUNET_PeerIdentity *peer,
+ struct Session *session);
+
/**
* Function called for a quick conversion of the binary address to
* a numeric address. Note that the caller must not free the
*/
GNUNET_TRANSPORT_DisconnectSessionFunction disconnect_session;
+ /**
+ * Function that will be called whenever the transport service wants to
+ * notify the plugin that a session is still active and in use and
+ * therefore the session timeout for this session has to be updated
+ */
+ GNUNET_TRANSPORT_UpdateSessionTimeout update_session_timeout;
+
+ /**
+ * Function that will be called whenever the transport service wants to
+ * notify the plugin that the inbound quota changed and that the plugin
+ * should update it's delay for the next receive value
+ */
+ //GNUNET_TRANSPORT_UpdateNextReceiveTimeout update_next_receive_timeout;
+
+ /**
+ * Function that is used to query keepalive factor.
+ * GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT is divided by this number to
+ * calculate the interval between keepalive packets.
+ */
+ GNUNET_TRANSPORT_QueryKeepaliveFactorFunction query_keepalive_factor;
+
/**
* Function to pretty-print addresses. NOTE: this function is not
* yet used by transport-service, but will be used in the future