aboutsummaryrefslogtreecommitdiff
path: root/src/fs/gnunet-service-fs_pe.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs/gnunet-service-fs_pe.c')
-rw-r--r--src/fs/gnunet-service-fs_pe.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/fs/gnunet-service-fs_pe.c b/src/fs/gnunet-service-fs_pe.c
index ed59c59e6..10c522299 100644
--- a/src/fs/gnunet-service-fs_pe.c
+++ b/src/fs/gnunet-service-fs_pe.c
@@ -302,6 +302,9 @@ transmit_message_callback (void *cls, size_t buf_size, void *buf)
302 { 302 {
303 /* failed, try again... */ 303 /* failed, try again... */
304 pp->task = GNUNET_SCHEDULER_add_now (&schedule_peer_transmission, pp); 304 pp->task = GNUNET_SCHEDULER_add_now (&schedule_peer_transmission, pp);
305 GNUNET_STATISTICS_update (GSF_stats,
306 gettext_noop ("# transmission failed (core has no bandwidth)"), 1,
307 GNUNET_NO);
305 return 0; 308 return 0;
306 } 309 }
307 rp = GNUNET_CONTAINER_heap_peek (pp->priority_heap); 310 rp = GNUNET_CONTAINER_heap_peek (pp->priority_heap);
@@ -350,6 +353,7 @@ schedule_peer_transmission (void *cls,
350 struct PeerPlan *pp = cls; 353 struct PeerPlan *pp = cls;
351 struct GSF_RequestPlan *rp; 354 struct GSF_RequestPlan *rp;
352 size_t msize; 355 size_t msize;
356 struct GNUNET_TIME_Relative delay;
353 357
354 pp->task = GNUNET_SCHEDULER_NO_TASK; 358 pp->task = GNUNET_SCHEDULER_NO_TASK;
355 if (pp->pth != NULL) 359 if (pp->pth != NULL)
@@ -357,6 +361,14 @@ schedule_peer_transmission (void *cls,
357 GSF_peer_transmit_cancel_ (pp->pth); 361 GSF_peer_transmit_cancel_ (pp->pth);
358 pp->pth = NULL; 362 pp->pth = NULL;
359 } 363 }
364 GNUNET_STATISTICS_set (GSF_stats,
365 gettext_noop ("# query delay heap size"),
366 GNUNET_CONTAINER_heap_get_size (pp->delay_heap),
367 GNUNET_NO);
368 GNUNET_STATISTICS_set (GSF_stats,
369 gettext_noop ("# query priority heap size"),
370 GNUNET_CONTAINER_heap_get_size (pp->priority_heap),
371 GNUNET_NO);
360 /* move ready requests to priority queue */ 372 /* move ready requests to priority queue */
361 while ((NULL != (rp = GNUNET_CONTAINER_heap_peek (pp->delay_heap))) && 373 while ((NULL != (rp = GNUNET_CONTAINER_heap_peek (pp->delay_heap))) &&
362 (GNUNET_TIME_absolute_get_remaining 374 (GNUNET_TIME_absolute_get_remaining
@@ -377,19 +389,26 @@ schedule_peer_transmission (void *cls,
377#endif 389#endif
378 return; /* both queues empty */ 390 return; /* both queues empty */
379 } 391 }
392 delay = GNUNET_TIME_absolute_get_remaining (rp->earliest_transmission);
380#if DEBUG_FS 393#if DEBUG_FS
381 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 394 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
382 "Sleeping for %llu ms before retrying requests on plan %p.\n", 395 "Sleeping for %llu ms before retrying requests on plan %p.\n",
383 (unsigned long long) 396 (unsigned long long)
384 GNUNET_TIME_absolute_get_remaining 397 delay.rel_value, pp);
385 (rp->earliest_transmission).rel_value, pp);
386#endif 398#endif
399 GNUNET_STATISTICS_set (GSF_stats,
400 gettext_noop ("# delay heap timeout"),
401 delay.rel_value,
402 GNUNET_NO);
403
387 pp->task = 404 pp->task =
388 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_absolute_get_remaining 405 GNUNET_SCHEDULER_add_delayed (delay,
389 (rp->earliest_transmission),
390 &schedule_peer_transmission, pp); 406 &schedule_peer_transmission, pp);
391 return; 407 return;
392 } 408 }
409 GNUNET_STATISTICS_update (GSF_stats,
410 gettext_noop ("# query plans executed"), 1,
411 GNUNET_NO);
393 /* process from priority heap */ 412 /* process from priority heap */
394 rp = GNUNET_CONTAINER_heap_peek (pp->priority_heap); 413 rp = GNUNET_CONTAINER_heap_peek (pp->priority_heap);
395#if DEBUG_FS > 1 414#if DEBUG_FS > 1