aboutsummaryrefslogtreecommitdiff
path: root/src/ats/gnunet-service-ats_scheduling.h
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-14 08:03:02 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-14 08:03:02 +0000
commit70f9bcf894b28799df078330d204860e7ea7bae8 (patch)
tree1ddea2775a875e840ab93e637b6f05b8678fc057 /src/ats/gnunet-service-ats_scheduling.h
parent1bab64147e7b113051dcd41ae18fa0e9537b7fd9 (diff)
downloadgnunet-70f9bcf894b28799df078330d204860e7ea7bae8.tar.gz
gnunet-70f9bcf894b28799df078330d204860e7ea7bae8.zip
more ATS implementation: message parsing and generation:
Diffstat (limited to 'src/ats/gnunet-service-ats_scheduling.h')
-rw-r--r--src/ats/gnunet-service-ats_scheduling.h82
1 files changed, 80 insertions, 2 deletions
diff --git a/src/ats/gnunet-service-ats_scheduling.h b/src/ats/gnunet-service-ats_scheduling.h
index 5c8f77ed8..d2506de6a 100644
--- a/src/ats/gnunet-service-ats_scheduling.h
+++ b/src/ats/gnunet-service-ats_scheduling.h
@@ -22,34 +22,112 @@
22 * @file ats/gnunet-service-ats_scheduling.h 22 * @file ats/gnunet-service-ats_scheduling.h
23 * @brief ats service, interaction with 'scheduling' API 23 * @brief ats service, interaction with 'scheduling' API
24 * @author Matthias Wachs 24 * @author Matthias Wachs
25 * @author Christian Grothoff
25 */ 26 */
26#ifndef GNUNET_SERVICE_ATS_SCHEDULING_H 27#ifndef GNUNET_SERVICE_ATS_SCHEDULING_H
27#define GNUNET_SERVICE_ATS_SCHEDULING_H 28#define GNUNET_SERVICE_ATS_SCHEDULING_H
28 29
29#include "gnunet_util_lib.h" 30#include "gnunet_util_lib.h"
30 31
32
33/**
34 * Register a new scheduling client.
35 *
36 * @param client handle of the new client
37 */
38void
39GAS_scheduling_add_client (struct GNUNET_SERVER_Client *client);
40
41
42/**
43 * Unregister a client (which may have been a scheduling client,
44 * but this is not assured).
45 *
46 * @param client handle of the (now dead) client
47 */
31void 48void
32GAS_add_scheduling_client (struct GNUNET_SERVER_Client *client); 49GAS_scheduling_remove_client (struct GNUNET_SERVER_Client *client);
33 50
34 51
52/**
53 * Transmit the given address suggestion and bandwidth update to all scheduling
54 * clients.
55 *
56 * @param peer peer for which this is an address suggestion
57 * @param plugin_name 0-termintated string specifying the transport plugin
58 * @param plugin_addr binary address for the plugin to use
59 * @param plugin_addr_len number of bytes in plugin_addr
60 * @param session_client which client gave us this session_id?
61 * @param session_id session ID to use for the given client (other clients will see 0)
62 * @param atsi performance data for the address
63 * @param atsi_count number of performance records in 'ats'
64 * @param bandwidth_out assigned outbound bandwidth
65 * @param bandwidth_in assigned inbound bandwidth
66 */
35void 67void
36GAS_remove_scheduling_client (struct GNUNET_SERVER_Client *client); 68GAS_scheduling_transmit_address_update (const struct GNUNET_PeerIdentity *peer,
69 const char *plugin_name,
70 const void *plugin_addr, size_t plugin_addr_len,
71 struct GNUNET_SERVER_Client *session_client,
72 uint32_t session_id,
73 const struct GNUNET_TRANSPORT_ATS_Information *atsi,
74 uint32_t atsi_count,
75 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
76 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in);
37 77
38 78
79/**
80 * Handle 'request address' messages from clients.
81 *
82 * @param cls unused, NULL
83 * @param client client that sent the request
84 * @param message the request message
85 */
39void 86void
40GAS_handle_request_address (void *cls, struct GNUNET_SERVER_Client *client, 87GAS_handle_request_address (void *cls, struct GNUNET_SERVER_Client *client,
41 const struct GNUNET_MessageHeader *message); 88 const struct GNUNET_MessageHeader *message);
42 89
43 90
91
92/**
93 * Handle 'address update' messages from clients.
94 *
95 * @param cls unused, NULL
96 * @param client client that sent the request
97 * @param message the request message
98 */
44void 99void
45GAS_handle_address_update (void *cls, struct GNUNET_SERVER_Client *client, 100GAS_handle_address_update (void *cls, struct GNUNET_SERVER_Client *client,
46 const struct GNUNET_MessageHeader *message); 101 const struct GNUNET_MessageHeader *message);
47 102
48 103
104/**
105 * Handle 'address destroyed' messages from clients.
106 *
107 * @param cls unused, NULL
108 * @param client client that sent the request
109 * @param message the request message
110 */
49void 111void
50GAS_handle_address_destroyed (void *cls, struct GNUNET_SERVER_Client *client, 112GAS_handle_address_destroyed (void *cls, struct GNUNET_SERVER_Client *client,
51 const struct GNUNET_MessageHeader *message); 113 const struct GNUNET_MessageHeader *message);
52 114
53 115
116/**
117 * Initialize scheduling subsystem.
118 *
119 * @param server handle to our server
120 */
121void
122GAS_scheduling_init (struct GNUNET_SERVER_Handle *server);
123
124
125/**
126 * Shutdown scheduling subsystem.
127 */
128void
129GAS_scheduling_done (void);
130
131
54#endif 132#endif
55/* end of gnunet-service-ats_scheduling.h */ 133/* end of gnunet-service-ats_scheduling.h */