diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-14 08:03:02 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-14 08:03:02 +0000 |
commit | 70f9bcf894b28799df078330d204860e7ea7bae8 (patch) | |
tree | 1ddea2775a875e840ab93e637b6f05b8678fc057 /src/ats/gnunet-service-ats_scheduling.h | |
parent | 1bab64147e7b113051dcd41ae18fa0e9537b7fd9 (diff) | |
download | gnunet-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.h | 82 |
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 | */ | ||
38 | void | ||
39 | GAS_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 | */ | ||
31 | void | 48 | void |
32 | GAS_add_scheduling_client (struct GNUNET_SERVER_Client *client); | 49 | GAS_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 | */ | ||
35 | void | 67 | void |
36 | GAS_remove_scheduling_client (struct GNUNET_SERVER_Client *client); | 68 | GAS_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 | */ | ||
39 | void | 86 | void |
40 | GAS_handle_request_address (void *cls, struct GNUNET_SERVER_Client *client, | 87 | GAS_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 | */ | ||
44 | void | 99 | void |
45 | GAS_handle_address_update (void *cls, struct GNUNET_SERVER_Client *client, | 100 | GAS_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 | */ | ||
49 | void | 111 | void |
50 | GAS_handle_address_destroyed (void *cls, struct GNUNET_SERVER_Client *client, | 112 | GAS_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 | */ | ||
121 | void | ||
122 | GAS_scheduling_init (struct GNUNET_SERVER_Handle *server); | ||
123 | |||
124 | |||
125 | /** | ||
126 | * Shutdown scheduling subsystem. | ||
127 | */ | ||
128 | void | ||
129 | GAS_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 */ |