diff options
author | wachs <wachs@140774ce-b5e7-0310-ab8b-a85725594a96> | 2013-02-05 12:45:13 +0000 |
---|---|---|
committer | wachs <wachs@140774ce-b5e7-0310-ab8b-a85725594a96> | 2013-02-05 12:45:13 +0000 |
commit | 8024e931b411b88418ab5802586567d3d86bf21f (patch) | |
tree | fa2e023cda3dd546c2f34da9a9f2214786d1a111 | |
parent | a31112008dc93d49b93e723240ae379ddfbe08c4 (diff) |
more metric
git-svn-id: https://gnunet.org/svn/gnunet@26014 140774ce-b5e7-0310-ab8b-a85725594a96
-rw-r--r-- | src/transport/gnunet-service-transport.c | 9 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport.h | 31 | ||||
-rw-r--r-- | src/transport/transport.h | 28 |
3 files changed, 65 insertions, 3 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 9f60d03d75..e64cbfbfe0 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c @@ -37,6 +37,7 @@ #include "gnunet-service-transport_neighbours.h" #include "gnunet-service-transport_plugins.h" #include "gnunet-service-transport_validation.h" +#include "gnunet-service-transport_manipulation.h" #include "transport.h" /* globals */ @@ -229,8 +230,8 @@ process_payload (const struct GNUNET_PeerIdentity *peer, * @return how long the plugin should wait until receiving more data * (plugins that do not support this, can ignore the return value) */ -static struct GNUNET_TIME_Relative -plugin_env_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, +struct GNUNET_TIME_Relative +GST_receive_callback (void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_MessageHeader *message, const struct GNUNET_ATS_Information *ats, uint32_t ats_count, struct Session *session, @@ -568,6 +569,7 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) GST_clients_stop (); GST_blacklist_stop (); GST_hello_stop (); + GST_manipulation_stop (); if (NULL != GST_peerinfo) { @@ -677,7 +679,8 @@ key_generation_cb (void *cls, GST_blacklist_start (GST_server); GST_ats = GNUNET_ATS_scheduling_init (GST_cfg, &ats_request_address_change, NULL); - GST_plugins_load (&plugin_env_receive_callback, + GST_manipulation_init (); + GST_plugins_load (&GST_manipulation_recv, &plugin_env_address_change_notification, &plugin_env_session_end, &plugin_env_address_to_type); diff --git a/src/transport/gnunet-service-transport.h b/src/transport/gnunet-service-transport.h index adc28ba6d0..abc473e213 100644 --- a/src/transport/gnunet-service-transport.h +++ b/src/transport/gnunet-service-transport.h @@ -67,6 +67,37 @@ extern struct GNUNET_CRYPTO_RsaPrivateKey *GST_my_private_key; */ 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 ats performance information + * @param ats_count number of records in ats + * @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, + const struct GNUNET_ATS_Information *ats, + uint32_t ats_count, struct Session *session, + const char *sender_address, + uint16_t sender_address_len); + #endif /* end of file gnunet-service-transport_plugins.h */ diff --git a/src/transport/transport.h b/src/transport/transport.h index 2e7bd8372f..be31f0ad67 100644 --- a/src/transport/transport.h +++ b/src/transport/transport.h @@ -415,6 +415,34 @@ struct AddressIterateMessage /** + * Message from the library to the transport service + * asking for binary addresses known for a peer. + */ +struct TrafficMetricMessage +{ + /** + * Type will be GNUNET_MESSAGE_TYPE_TRANSPORT_TRAFFIC_METRIC + */ + struct GNUNET_MessageHeader header; + + /** + * SEND, RECEIVE or BOTH? + */ + uint16_t direction; + + /** + * Traffic metrics count + */ + uint16_t ats_count; + + /** + * The identity of the peer to look up. + */ + struct GNUNET_PeerIdentity peer; +}; + + +/** * Message from the transport service to the library * containing binary addresses known for a peer. * Memory layout: |