diff options
Diffstat (limited to 'src/transport/transport_api2_monitor.c')
-rw-r--r-- | src/transport/transport_api2_monitor.c | 127 |
1 files changed, 63 insertions, 64 deletions
diff --git a/src/transport/transport_api2_monitor.c b/src/transport/transport_api2_monitor.c index 97812ff89..74624326c 100644 --- a/src/transport/transport_api2_monitor.c +++ b/src/transport/transport_api2_monitor.c | |||
@@ -16,7 +16,7 @@ | |||
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 | /** | 21 | /** |
22 | * @file transport/transport_api2_monitor.c | 22 | * @file transport/transport_api2_monitor.c |
@@ -33,8 +33,7 @@ | |||
33 | /** | 33 | /** |
34 | * Opaque handle to the transport service for monitors. | 34 | * Opaque handle to the transport service for monitors. |
35 | */ | 35 | */ |
36 | struct GNUNET_TRANSPORT_MonitorContext | 36 | struct GNUNET_TRANSPORT_MonitorContext { |
37 | { | ||
38 | /** | 37 | /** |
39 | * Our configuration. | 38 | * Our configuration. |
40 | */ | 39 | */ |
@@ -73,7 +72,7 @@ struct GNUNET_TRANSPORT_MonitorContext | |||
73 | * @param mc handle to reconnect | 72 | * @param mc handle to reconnect |
74 | */ | 73 | */ |
75 | static void | 74 | static void |
76 | reconnect (struct GNUNET_TRANSPORT_MonitorContext *mc); | 75 | reconnect(struct GNUNET_TRANSPORT_MonitorContext *mc); |
77 | 76 | ||
78 | 77 | ||
79 | /** | 78 | /** |
@@ -83,17 +82,17 @@ reconnect (struct GNUNET_TRANSPORT_MonitorContext *mc); | |||
83 | * @param ai address to delete | 82 | * @param ai address to delete |
84 | */ | 83 | */ |
85 | static void | 84 | static void |
86 | send_start_monitor (struct GNUNET_TRANSPORT_MonitorContext *mc) | 85 | send_start_monitor(struct GNUNET_TRANSPORT_MonitorContext *mc) |
87 | { | 86 | { |
88 | struct GNUNET_MQ_Envelope *env; | 87 | struct GNUNET_MQ_Envelope *env; |
89 | struct GNUNET_TRANSPORT_MonitorStart *smm; | 88 | struct GNUNET_TRANSPORT_MonitorStart *smm; |
90 | 89 | ||
91 | if (NULL == mc->mq) | 90 | if (NULL == mc->mq) |
92 | return; | 91 | return; |
93 | env = GNUNET_MQ_msg (smm, GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_START); | 92 | env = GNUNET_MQ_msg(smm, GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_START); |
94 | smm->one_shot = htonl ((uint32_t) mc->one_shot); | 93 | smm->one_shot = htonl((uint32_t)mc->one_shot); |
95 | smm->peer = mc->peer; | 94 | smm->peer = mc->peer; |
96 | GNUNET_MQ_send (mc->mq, env); | 95 | GNUNET_MQ_send(mc->mq, env); |
97 | } | 96 | } |
98 | 97 | ||
99 | 98 | ||
@@ -103,11 +102,11 @@ send_start_monitor (struct GNUNET_TRANSPORT_MonitorContext *mc) | |||
103 | * @param mc service to disconnect from | 102 | * @param mc service to disconnect from |
104 | */ | 103 | */ |
105 | static void | 104 | static void |
106 | disconnect (struct GNUNET_TRANSPORT_MonitorContext *mc) | 105 | disconnect(struct GNUNET_TRANSPORT_MonitorContext *mc) |
107 | { | 106 | { |
108 | if (NULL == mc->mq) | 107 | if (NULL == mc->mq) |
109 | return; | 108 | return; |
110 | GNUNET_MQ_destroy (mc->mq); | 109 | GNUNET_MQ_destroy(mc->mq); |
111 | mc->mq = NULL; | 110 | mc->mq = NULL; |
112 | } | 111 | } |
113 | 112 | ||
@@ -119,16 +118,16 @@ disconnect (struct GNUNET_TRANSPORT_MonitorContext *mc) | |||
119 | * @param error what error happened? | 118 | * @param error what error happened? |
120 | */ | 119 | */ |
121 | static void | 120 | static void |
122 | error_handler (void *cls, enum GNUNET_MQ_Error error) | 121 | error_handler(void *cls, enum GNUNET_MQ_Error error) |
123 | { | 122 | { |
124 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; | 123 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; |
125 | 124 | ||
126 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 125 | GNUNET_log(GNUNET_ERROR_TYPE_INFO, |
127 | "MQ failure %d, reconnecting to transport service.\n", | 126 | "MQ failure %d, reconnecting to transport service.\n", |
128 | error); | 127 | error); |
129 | disconnect (mc); | 128 | disconnect(mc); |
130 | /* TODO: maybe do this with exponential backoff/delay */ | 129 | /* TODO: maybe do this with exponential backoff/delay */ |
131 | reconnect (mc); | 130 | reconnect(mc); |
132 | } | 131 | } |
133 | 132 | ||
134 | 133 | ||
@@ -141,10 +140,10 @@ error_handler (void *cls, enum GNUNET_MQ_Error error) | |||
141 | * @return #GNUNET_OK if @a smt is well-formed | 140 | * @return #GNUNET_OK if @a smt is well-formed |
142 | */ | 141 | */ |
143 | static int | 142 | static int |
144 | check_monitor_data (void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) | 143 | check_monitor_data(void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) |
145 | { | 144 | { |
146 | (void) cls; | 145 | (void)cls; |
147 | GNUNET_MQ_check_zero_termination (md); | 146 | GNUNET_MQ_check_zero_termination(md); |
148 | return GNUNET_OK; | 147 | return GNUNET_OK; |
149 | } | 148 | } |
150 | 149 | ||
@@ -156,21 +155,21 @@ check_monitor_data (void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) | |||
156 | * @param md monitor data | 155 | * @param md monitor data |
157 | */ | 156 | */ |
158 | static void | 157 | static void |
159 | handle_monitor_data (void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) | 158 | handle_monitor_data(void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) |
160 | { | 159 | { |
161 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; | 160 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; |
162 | struct GNUNET_TRANSPORT_MonitorInformation mi; | 161 | struct GNUNET_TRANSPORT_MonitorInformation mi; |
163 | 162 | ||
164 | mi.address = (const char *) &md[1]; | 163 | mi.address = (const char *)&md[1]; |
165 | mi.nt = (enum GNUNET_NetworkType) ntohl (md->nt); | 164 | mi.nt = (enum GNUNET_NetworkType)ntohl(md->nt); |
166 | mi.cs = (enum GNUNET_TRANSPORT_ConnectionStatus) ntohl (md->cs); | 165 | mi.cs = (enum GNUNET_TRANSPORT_ConnectionStatus)ntohl(md->cs); |
167 | mi.num_msg_pending = ntohl (md->num_msg_pending); | 166 | mi.num_msg_pending = ntohl(md->num_msg_pending); |
168 | mi.num_bytes_pending = ntohl (md->num_bytes_pending); | 167 | mi.num_bytes_pending = ntohl(md->num_bytes_pending); |
169 | mi.last_validation = GNUNET_TIME_absolute_ntoh (md->last_validation); | 168 | mi.last_validation = GNUNET_TIME_absolute_ntoh(md->last_validation); |
170 | mi.valid_until = GNUNET_TIME_absolute_ntoh (md->valid_until); | 169 | mi.valid_until = GNUNET_TIME_absolute_ntoh(md->valid_until); |
171 | mi.next_validation = GNUNET_TIME_absolute_ntoh (md->next_validation); | 170 | mi.next_validation = GNUNET_TIME_absolute_ntoh(md->next_validation); |
172 | mi.rtt = GNUNET_TIME_relative_ntoh (md->rtt); | 171 | mi.rtt = GNUNET_TIME_relative_ntoh(md->rtt); |
173 | mc->cb (mc->cb_cls, &md->peer, &mi); | 172 | mc->cb(mc->cb_cls, &md->peer, &mi); |
174 | } | 173 | } |
175 | 174 | ||
176 | 175 | ||
@@ -181,19 +180,19 @@ handle_monitor_data (void *cls, const struct GNUNET_TRANSPORT_MonitorData *md) | |||
181 | * @param me end message | 180 | * @param me end message |
182 | */ | 181 | */ |
183 | static void | 182 | static void |
184 | handle_monitor_end (void *cls, const struct GNUNET_MessageHeader *me) | 183 | handle_monitor_end(void *cls, const struct GNUNET_MessageHeader *me) |
185 | { | 184 | { |
186 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; | 185 | struct GNUNET_TRANSPORT_MonitorContext *mc = cls; |
187 | 186 | ||
188 | if (GNUNET_YES != mc->one_shot) | 187 | if (GNUNET_YES != mc->one_shot) |
189 | { | 188 | { |
190 | GNUNET_break (0); | 189 | GNUNET_break(0); |
191 | disconnect (mc); | 190 | disconnect(mc); |
192 | reconnect (mc); | 191 | reconnect(mc); |
193 | return; | 192 | return; |
194 | } | 193 | } |
195 | mc->cb (mc->cb_cls, NULL, NULL); | 194 | mc->cb(mc->cb_cls, NULL, NULL); |
196 | GNUNET_TRANSPORT_monitor_cancel (mc); | 195 | GNUNET_TRANSPORT_monitor_cancel(mc); |
197 | } | 196 | } |
198 | 197 | ||
199 | 198 | ||
@@ -203,24 +202,24 @@ handle_monitor_end (void *cls, const struct GNUNET_MessageHeader *me) | |||
203 | * @param mc handle to reconnect | 202 | * @param mc handle to reconnect |
204 | */ | 203 | */ |
205 | static void | 204 | static void |
206 | reconnect (struct GNUNET_TRANSPORT_MonitorContext *mc) | 205 | reconnect(struct GNUNET_TRANSPORT_MonitorContext *mc) |
207 | { | 206 | { |
208 | struct GNUNET_MQ_MessageHandler handlers[] = | 207 | struct GNUNET_MQ_MessageHandler handlers[] = |
209 | {GNUNET_MQ_hd_var_size (monitor_data, | 208 | { GNUNET_MQ_hd_var_size(monitor_data, |
210 | GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_DATA, | 209 | GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_DATA, |
211 | struct GNUNET_TRANSPORT_MonitorData, | 210 | struct GNUNET_TRANSPORT_MonitorData, |
211 | mc), | ||
212 | GNUNET_MQ_hd_fixed_size(monitor_end, | ||
213 | GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_END, | ||
214 | struct GNUNET_MessageHeader, | ||
212 | mc), | 215 | mc), |
213 | GNUNET_MQ_hd_fixed_size (monitor_end, | 216 | GNUNET_MQ_handler_end() }; |
214 | GNUNET_MESSAGE_TYPE_TRANSPORT_MONITOR_END, | ||
215 | struct GNUNET_MessageHeader, | ||
216 | mc), | ||
217 | GNUNET_MQ_handler_end ()}; | ||
218 | 217 | ||
219 | mc->mq = | 218 | mc->mq = |
220 | GNUNET_CLIENT_connect (mc->cfg, "transport", handlers, &error_handler, mc); | 219 | GNUNET_CLIENT_connect(mc->cfg, "transport", handlers, &error_handler, mc); |
221 | if (NULL == mc->mq) | 220 | if (NULL == mc->mq) |
222 | return; | 221 | return; |
223 | send_start_monitor (mc); | 222 | send_start_monitor(mc); |
224 | } | 223 | } |
225 | 224 | ||
226 | 225 | ||
@@ -251,27 +250,27 @@ reconnect (struct GNUNET_TRANSPORT_MonitorContext *mc) | |||
251 | * @param cb_cls closure for @a mc | 250 | * @param cb_cls closure for @a mc |
252 | */ | 251 | */ |
253 | struct GNUNET_TRANSPORT_MonitorContext * | 252 | struct GNUNET_TRANSPORT_MonitorContext * |
254 | GNUNET_TRANSPORT_monitor (const struct GNUNET_CONFIGURATION_Handle *cfg, | 253 | GNUNET_TRANSPORT_monitor(const struct GNUNET_CONFIGURATION_Handle *cfg, |
255 | const struct GNUNET_PeerIdentity *peer, | 254 | const struct GNUNET_PeerIdentity *peer, |
256 | int one_shot, | 255 | int one_shot, |
257 | GNUNET_TRANSPORT_MonitorCallback cb, | 256 | GNUNET_TRANSPORT_MonitorCallback cb, |
258 | void *cb_cls) | 257 | void *cb_cls) |
259 | { | 258 | { |
260 | struct GNUNET_TRANSPORT_MonitorContext *mc; | 259 | struct GNUNET_TRANSPORT_MonitorContext *mc; |
261 | 260 | ||
262 | mc = GNUNET_new (struct GNUNET_TRANSPORT_MonitorContext); | 261 | mc = GNUNET_new(struct GNUNET_TRANSPORT_MonitorContext); |
263 | mc->cfg = cfg; | 262 | mc->cfg = cfg; |
264 | if (NULL != peer) | 263 | if (NULL != peer) |
265 | mc->peer = *peer; | 264 | mc->peer = *peer; |
266 | mc->one_shot = one_shot; | 265 | mc->one_shot = one_shot; |
267 | mc->cb = cb; | 266 | mc->cb = cb; |
268 | mc->cb_cls = cb_cls; | 267 | mc->cb_cls = cb_cls; |
269 | reconnect (mc); | 268 | reconnect(mc); |
270 | if (NULL == mc->mq) | 269 | if (NULL == mc->mq) |
271 | { | 270 | { |
272 | GNUNET_free (mc); | 271 | GNUNET_free(mc); |
273 | return NULL; | 272 | return NULL; |
274 | } | 273 | } |
275 | return mc; | 274 | return mc; |
276 | } | 275 | } |
277 | 276 | ||
@@ -282,10 +281,10 @@ GNUNET_TRANSPORT_monitor (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
282 | * @param pmc handle for the request to cancel | 281 | * @param pmc handle for the request to cancel |
283 | */ | 282 | */ |
284 | void | 283 | void |
285 | GNUNET_TRANSPORT_monitor_cancel (struct GNUNET_TRANSPORT_MonitorContext *mc) | 284 | GNUNET_TRANSPORT_monitor_cancel(struct GNUNET_TRANSPORT_MonitorContext *mc) |
286 | { | 285 | { |
287 | disconnect (mc); | 286 | disconnect(mc); |
288 | GNUNET_free (mc); | 287 | GNUNET_free(mc); |
289 | } | 288 | } |
290 | 289 | ||
291 | /* end of transport_api2_monitor.c */ | 290 | /* end of transport_api2_monitor.c */ |