aboutsummaryrefslogtreecommitdiff
path: root/src/ats/gnunet-service-ats_performance.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ats/gnunet-service-ats_performance.c')
-rw-r--r--src/ats/gnunet-service-ats_performance.c230
1 files changed, 115 insertions, 115 deletions
diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c
index 94a22d378..16d0777de 100644
--- a/src/ats/gnunet-service-ats_performance.c
+++ b/src/ats/gnunet-service-ats_performance.c
@@ -11,12 +11,12 @@
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU Affero General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18 SPDX-License-Identifier: AGPL3.0-or-later 18 SPDX-License-Identifier: AGPL3.0-or-later
19*/ 19 */
20/** 20/**
21 * @file ats/gnunet-service-ats_performance.c 21 * @file ats/gnunet-service-ats_performance.c
22 * @brief ats service, interaction with 'performance' API 22 * @brief ats service, interaction with 'performance' API
@@ -63,64 +63,64 @@ static struct GNUNET_NotificationContext *nc_pic;
63 * @param bandwidth_in assigned inbound bandwidth 63 * @param bandwidth_in assigned inbound bandwidth
64 */ 64 */
65static void 65static void
66notify_client (struct GNUNET_SERVICE_Client *client, 66notify_client(struct GNUNET_SERVICE_Client *client,
67 const struct GNUNET_PeerIdentity *peer, 67 const struct GNUNET_PeerIdentity *peer,
68 const char *plugin_name, 68 const char *plugin_name,
69 const void *plugin_addr, 69 const void *plugin_addr,
70 size_t plugin_addr_len, 70 size_t plugin_addr_len,
71 int active, 71 int active,
72 const struct GNUNET_ATS_Properties *prop, 72 const struct GNUNET_ATS_Properties *prop,
73 enum GNUNET_HELLO_AddressInfo local_address_info, 73 enum GNUNET_HELLO_AddressInfo local_address_info,
74 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 74 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
75 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) 75 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
76{ 76{
77 struct PeerInformationMessage *msg; 77 struct PeerInformationMessage *msg;
78 size_t plugin_name_length = strlen (plugin_name) + 1; 78 size_t plugin_name_length = strlen(plugin_name) + 1;
79 size_t msize = 79 size_t msize =
80 sizeof (struct PeerInformationMessage) + 80 sizeof(struct PeerInformationMessage) +
81 plugin_addr_len + 81 plugin_addr_len +
82 plugin_name_length; 82 plugin_name_length;
83 char buf[msize] GNUNET_ALIGN; 83 char buf[msize] GNUNET_ALIGN;
84 char *addrp; 84 char *addrp;
85 85
86 if (NULL != prop) 86 if (NULL != prop)
87 GNUNET_break (GNUNET_NT_UNSPECIFIED != prop->scope); 87 GNUNET_break(GNUNET_NT_UNSPECIFIED != prop->scope);
88 GNUNET_assert (msize < GNUNET_MAX_MESSAGE_SIZE); 88 GNUNET_assert(msize < GNUNET_MAX_MESSAGE_SIZE);
89 msg = (struct PeerInformationMessage *) buf; 89 msg = (struct PeerInformationMessage *)buf;
90 msg->header.size = htons (msize); 90 msg->header.size = htons(msize);
91 msg->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_PEER_INFORMATION); 91 msg->header.type = htons(GNUNET_MESSAGE_TYPE_ATS_PEER_INFORMATION);
92 msg->id = htonl (0); 92 msg->id = htonl(0);
93 msg->peer = *peer; 93 msg->peer = *peer;
94 msg->address_length = htons (plugin_addr_len); 94 msg->address_length = htons(plugin_addr_len);
95 msg->address_active = ntohl ((uint32_t) active); 95 msg->address_active = ntohl((uint32_t)active);
96 msg->plugin_name_length = htons (plugin_name_length); 96 msg->plugin_name_length = htons(plugin_name_length);
97 msg->bandwidth_out = bandwidth_out; 97 msg->bandwidth_out = bandwidth_out;
98 msg->bandwidth_in = bandwidth_in; 98 msg->bandwidth_in = bandwidth_in;
99 if (NULL != prop) 99 if (NULL != prop)
100 GNUNET_ATS_properties_hton (&msg->properties, 100 GNUNET_ATS_properties_hton(&msg->properties,
101 prop); 101 prop);
102 else 102 else
103 memset (&msg->properties, 103 memset(&msg->properties,
104 0, 104 0,
105 sizeof (struct GNUNET_ATS_Properties)); 105 sizeof(struct GNUNET_ATS_Properties));
106 msg->address_local_info = htonl (local_address_info); 106 msg->address_local_info = htonl(local_address_info);
107 addrp = (char *) &msg[1]; 107 addrp = (char *)&msg[1];
108 GNUNET_memcpy (addrp, plugin_addr, plugin_addr_len); 108 GNUNET_memcpy(addrp, plugin_addr, plugin_addr_len);
109 strcpy (&addrp[plugin_addr_len], plugin_name); 109 strcpy(&addrp[plugin_addr_len], plugin_name);
110 if (NULL == client) 110 if (NULL == client)
111 { 111 {
112 GNUNET_notification_context_broadcast (nc_pic, 112 GNUNET_notification_context_broadcast(nc_pic,
113 &msg->header, 113 &msg->header,
114 GNUNET_YES); 114 GNUNET_YES);
115 } 115 }
116 else 116 else
117 { 117 {
118 struct GNUNET_MQ_Envelope *env; 118 struct GNUNET_MQ_Envelope *env;
119 119
120 env = GNUNET_MQ_msg_copy (&msg->header); 120 env = GNUNET_MQ_msg_copy(&msg->header);
121 GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), 121 GNUNET_MQ_send(GNUNET_SERVICE_client_get_mq(client),
122 env); 122 env);
123 } 123 }
124} 124}
125 125
126 126
@@ -142,32 +142,32 @@ notify_client (struct GNUNET_SERVICE_Client *client,
142 * @param bandwidth_in assigned inbound bandwidth 142 * @param bandwidth_in assigned inbound bandwidth
143 */ 143 */
144void 144void
145GAS_performance_notify_all_clients (const struct GNUNET_PeerIdentity *peer, 145GAS_performance_notify_all_clients(const struct GNUNET_PeerIdentity *peer,
146 const char *plugin_name, 146 const char *plugin_name,
147 const void *plugin_addr, 147 const void *plugin_addr,
148 size_t plugin_addr_len, 148 size_t plugin_addr_len,
149 int active, 149 int active,
150 const struct GNUNET_ATS_Properties *prop, 150 const struct GNUNET_ATS_Properties *prop,
151 enum GNUNET_HELLO_AddressInfo local_address_info, 151 enum GNUNET_HELLO_AddressInfo local_address_info,
152 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 152 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
153 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) 153 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
154{ 154{
155 GNUNET_break ( (NULL == prop) || 155 GNUNET_break((NULL == prop) ||
156 (GNUNET_NT_UNSPECIFIED != prop->scope) ); 156 (GNUNET_NT_UNSPECIFIED != prop->scope));
157 notify_client (NULL, 157 notify_client(NULL,
158 peer, 158 peer,
159 plugin_name, 159 plugin_name,
160 plugin_addr, 160 plugin_addr,
161 plugin_addr_len, 161 plugin_addr_len,
162 active, 162 active,
163 prop, 163 prop,
164 local_address_info, 164 local_address_info,
165 bandwidth_out, 165 bandwidth_out,
166 bandwidth_in); 166 bandwidth_in);
167 GNUNET_STATISTICS_update (GSA_stats, 167 GNUNET_STATISTICS_update(GSA_stats,
168 "# performance updates given to clients", 168 "# performance updates given to clients",
169 1, 169 1,
170 GNUNET_NO); 170 GNUNET_NO);
171} 171}
172 172
173 173
@@ -186,38 +186,38 @@ GAS_performance_notify_all_clients (const struct GNUNET_PeerIdentity *peer,
186 * @param bandwidth_in current inbound bandwidth assigned to address 186 * @param bandwidth_in current inbound bandwidth assigned to address
187 */ 187 */
188static void 188static void
189peerinfo_it (void *cls, 189peerinfo_it(void *cls,
190 const struct GNUNET_PeerIdentity *id, 190 const struct GNUNET_PeerIdentity *id,
191 const char *plugin_name, 191 const char *plugin_name,
192 const void *plugin_addr, 192 const void *plugin_addr,
193 size_t plugin_addr_len, 193 size_t plugin_addr_len,
194 int active, 194 int active,
195 const struct GNUNET_ATS_Properties *prop, 195 const struct GNUNET_ATS_Properties *prop,
196 enum GNUNET_HELLO_AddressInfo local_address_info, 196 enum GNUNET_HELLO_AddressInfo local_address_info,
197 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, 197 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out,
198 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in) 198 struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in)
199{ 199{
200 struct GNUNET_SERVICE_Client *client = cls; 200 struct GNUNET_SERVICE_Client *client = cls;
201 201
202 if (NULL == id) 202 if (NULL == id)
203 return; 203 return;
204 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 204 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
205 "Callback for peer `%s' plugin `%s' BW out %u, BW in %u \n", 205 "Callback for peer `%s' plugin `%s' BW out %u, BW in %u \n",
206 GNUNET_i2s (id), 206 GNUNET_i2s(id),
207 plugin_name, 207 plugin_name,
208 (unsigned int) ntohl (bandwidth_out.value__), 208 (unsigned int)ntohl(bandwidth_out.value__),
209 (unsigned int) ntohl (bandwidth_in.value__)); 209 (unsigned int)ntohl(bandwidth_in.value__));
210 GNUNET_break (GNUNET_NT_UNSPECIFIED != prop->scope); 210 GNUNET_break(GNUNET_NT_UNSPECIFIED != prop->scope);
211 notify_client (client, 211 notify_client(client,
212 id, 212 id,
213 plugin_name, 213 plugin_name,
214 plugin_addr, 214 plugin_addr,
215 plugin_addr_len, 215 plugin_addr_len,
216 active, 216 active,
217 prop, 217 prop,
218 local_address_info, 218 local_address_info,
219 bandwidth_out, 219 bandwidth_out,
220 bandwidth_in); 220 bandwidth_in);
221} 221}
222 222
223 223
@@ -228,25 +228,25 @@ peerinfo_it (void *cls,
228 * @param flag flag specifying the type of the client 228 * @param flag flag specifying the type of the client
229 */ 229 */
230void 230void
231GAS_performance_add_client (struct GNUNET_SERVICE_Client *client, 231GAS_performance_add_client(struct GNUNET_SERVICE_Client *client,
232 enum StartFlag flag) 232 enum StartFlag flag)
233{ 233{
234 struct GNUNET_MQ_Handle *mq; 234 struct GNUNET_MQ_Handle *mq;
235 235
236 mq = GNUNET_SERVICE_client_get_mq (client); 236 mq = GNUNET_SERVICE_client_get_mq(client);
237 if (START_FLAG_PERFORMANCE_WITH_PIC == flag) 237 if (START_FLAG_PERFORMANCE_WITH_PIC == flag)
238 { 238 {
239 GNUNET_notification_context_add (nc_pic, 239 GNUNET_notification_context_add(nc_pic,
240 mq); 240 mq);
241 GAS_addresses_get_peer_info (NULL, 241 GAS_addresses_get_peer_info(NULL,
242 &peerinfo_it, 242 &peerinfo_it,
243 client); 243 client);
244 } 244 }
245 else 245 else
246 { 246 {
247 GNUNET_notification_context_add (nc_no_pic, 247 GNUNET_notification_context_add(nc_no_pic,
248 mq); 248 mq);
249 } 249 }
250} 250}
251 251
252 252
@@ -256,10 +256,10 @@ GAS_performance_add_client (struct GNUNET_SERVICE_Client *client,
256 * @param server handle to our server 256 * @param server handle to our server
257 */ 257 */
258void 258void
259GAS_performance_init () 259GAS_performance_init()
260{ 260{
261 nc_no_pic = GNUNET_notification_context_create (32); 261 nc_no_pic = GNUNET_notification_context_create(32);
262 nc_pic = GNUNET_notification_context_create (32); 262 nc_pic = GNUNET_notification_context_create(32);
263} 263}
264 264
265 265
@@ -267,11 +267,11 @@ GAS_performance_init ()
267 * Shutdown performance subsystem. 267 * Shutdown performance subsystem.
268 */ 268 */
269void 269void
270GAS_performance_done () 270GAS_performance_done()
271{ 271{
272 GNUNET_notification_context_destroy (nc_no_pic); 272 GNUNET_notification_context_destroy(nc_no_pic);
273 nc_no_pic = NULL; 273 nc_no_pic = NULL;
274 GNUNET_notification_context_destroy (nc_pic); 274 GNUNET_notification_context_destroy(nc_pic);
275 nc_pic = NULL; 275 nc_pic = NULL;
276} 276}
277 277