aboutsummaryrefslogtreecommitdiff
path: root/src/mesh/mesh_api.c
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2011-08-31 22:21:25 +0000
committerBart Polot <bart@net.in.tum.de>2011-08-31 22:21:25 +0000
commit0f0f0759a16b5367757b78d9764902ac916fb689 (patch)
tree086805d374969d34f67a74819fcc92290e9edd58 /src/mesh/mesh_api.c
parent880b597b61d9b343d881edef2d42761e0407ebc3 (diff)
downloadgnunet-0f0f0759a16b5367757b78d9764902ac916fb689.tar.gz
gnunet-0f0f0759a16b5367757b78d9764902ac916fb689.zip
WiP
Diffstat (limited to 'src/mesh/mesh_api.c')
-rw-r--r--src/mesh/mesh_api.c39
1 files changed, 24 insertions, 15 deletions
diff --git a/src/mesh/mesh_api.c b/src/mesh/mesh_api.c
index 5ea4789b8..615593621 100644
--- a/src/mesh/mesh_api.c
+++ b/src/mesh/mesh_api.c
@@ -200,6 +200,7 @@ send_hello_message (void *cls, size_t size, void *buf)
200 200
201 struct peer_list_element *element = cls; 201 struct peer_list_element *element = cls;
202 struct GNUNET_MESH_Handle *handle = element->handle; 202 struct GNUNET_MESH_Handle *handle = element->handle;
203
203 element->hello = NULL; 204 element->hello = NULL;
204 struct GNUNET_MessageHeader *hdr = buf; 205 struct GNUNET_MessageHeader *hdr = buf;
205 206
@@ -216,22 +217,30 @@ send_hello_message (void *cls, size_t size, void *buf)
216 return sent; 217 return sent;
217} 218}
218 219
219void schedule_hello_message(void* cls, const struct GNUNET_SCHEDULER_TaskContext* tctx) 220void
221schedule_hello_message (void *cls,
222 const struct GNUNET_SCHEDULER_TaskContext *tctx)
220{ 223{
221 struct peer_list_element *element = cls; 224 struct peer_list_element *element = cls;
225
222 element->sched = GNUNET_SCHEDULER_NO_TASK; 226 element->sched = GNUNET_SCHEDULER_NO_TASK;
223 227
224 if ((tctx->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0) 228 if ((tctx->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
225 return; 229 return;
226 230
227 if (element->hello == NULL) 231 if (element->hello == NULL)
228 element->hello = GNUNET_CORE_notify_transmit_ready (element->handle->core, GNUNET_NO, 42, 232 element->hello =
229 GNUNET_TIME_UNIT_SECONDS, &element->peer, 233 GNUNET_CORE_notify_transmit_ready (element->handle->core, GNUNET_NO, 42,
230 sizeof (struct GNUNET_MessageHeader) + 234 GNUNET_TIME_UNIT_SECONDS,
231 element->handle->hello_message_size, 235 &element->peer,
232 &send_hello_message, element); 236 sizeof (struct GNUNET_MessageHeader)
233 237 +
234 element->sched = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_MINUTES, schedule_hello_message, cls); 238 element->handle->hello_message_size,
239 &send_hello_message, element);
240
241 element->sched =
242 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES,
243 schedule_hello_message, cls);
235} 244}
236 245
237 246
@@ -257,7 +266,7 @@ core_connect (void *cls, const struct GNUNET_PeerIdentity *peer,
257 element->handle = handle; 266 element->handle = handle;
258 267
259 /* Send a hello to this peer */ 268 /* Send a hello to this peer */
260 element->sched = GNUNET_SCHEDULER_add_now(schedule_hello_message, element); 269 element->sched = GNUNET_SCHEDULER_add_now (schedule_hello_message, element);
261 270
262 if (NULL != atsi) 271 if (NULL != atsi)
263 memcpy (&element->atsi, atsi, 272 memcpy (&element->atsi, atsi,
@@ -327,8 +336,8 @@ core_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer)
327 tail); 336 tail);
328 GNUNET_free (tail); 337 GNUNET_free (tail);
329 } 338 }
330 GNUNET_CORE_notify_transmit_ready_cancel(element->hello); 339 GNUNET_CORE_notify_transmit_ready_cancel (element->hello);
331 GNUNET_SCHEDULER_cancel(element->sched); 340 GNUNET_SCHEDULER_cancel (element->sched);
332 GNUNET_free (element); 341 GNUNET_free (element);
333 } 342 }
334 343
@@ -885,8 +894,8 @@ GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle)
885 tail); 894 tail);
886 GNUNET_free (tail); 895 GNUNET_free (tail);
887 } 896 }
888 GNUNET_CORE_notify_transmit_ready_cancel(element->hello); 897 GNUNET_CORE_notify_transmit_ready_cancel (element->hello);
889 GNUNET_SCHEDULER_cancel(element->sched); 898 GNUNET_SCHEDULER_cancel (element->sched);
890 GNUNET_free (element); 899 GNUNET_free (element);
891 element = next; 900 element = next;
892 } 901 }
@@ -912,4 +921,4 @@ GNUNET_MESH_disconnect (struct GNUNET_MESH_Handle *handle)
912 GNUNET_free (handle); 921 GNUNET_free (handle);
913} 922}
914 923
915/* end of mesh_api.c */ 924/* end of mesh_api.c */ \ No newline at end of file