aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_manipulation.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-08-12 13:54:33 +0000
committerChristian Grothoff <christian@grothoff.org>2013-08-12 13:54:33 +0000
commit48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6 (patch)
treeb81629aa82e13b8c9dbc5c7ebd4002d93de04a02 /src/transport/gnunet-service-transport_manipulation.c
parente1b1446ff25ce0e5cb7871a16b24e88517d10803 (diff)
downloadgnunet-48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6.tar.gz
gnunet-48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6.zip
-more code migration to microseconds:
Diffstat (limited to 'src/transport/gnunet-service-transport_manipulation.c')
-rw-r--r--src/transport/gnunet-service-transport_manipulation.c145
1 files changed, 84 insertions, 61 deletions
diff --git a/src/transport/gnunet-service-transport_manipulation.c b/src/transport/gnunet-service-transport_manipulation.c
index 0ca732d62..eb75fbb01 100644
--- a/src/transport/gnunet-service-transport_manipulation.c
+++ b/src/transport/gnunet-service-transport_manipulation.c
@@ -578,42 +578,62 @@ GST_manipulation_recv (void *cls,
578void 578void
579GST_manipulation_init (const struct GNUNET_CONFIGURATION_Handle *GST_cfg) 579GST_manipulation_init (const struct GNUNET_CONFIGURATION_Handle *GST_cfg)
580{ 580{
581 unsigned long long tmp; 581 unsigned long long tmp;
582 582 struct GNUNET_TIME_Relative delay;
583 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, 583
584 "transport", "MANIPULATE_DISTANCE_IN", &tmp) && (tmp > 0)) 584 if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg,
585 { 585 "transport",
586 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Setting inbound distance_in to %u\n", 586 "MANIPULATE_DISTANCE_IN",
587 (unsigned long long) tmp); 587 &tmp)) &&
588 set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); 588 (tmp > 0) )
589 } 589 {
590 590 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
591 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, 591 "Setting inbound distance_in to %llu\n",
592 "transport", "MANIPULATE_DISTANCE_OUT", &tmp) && (tmp > 0)) 592 (unsigned long long) tmp);
593 { 593 set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp);
594 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Setting outbound distance_in to %u\n", 594 }
595 (unsigned long long) tmp); 595
596 set_metric (&man_handle.general, TM_SEND, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); 596 if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg,
597 } 597 "transport",
598 598 "MANIPULATE_DISTANCE_OUT",
599 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, 599 &tmp)) &&
600 "transport", "MANIPULATE_DELAY_IN", &tmp) && (tmp > 0)) 600 (tmp > 0) )
601 { 601 {
602 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Delaying inbound traffic for %llu ms\n", 602 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
603 (unsigned long long) tmp); 603 "Setting outbound distance_in to %llu\n",
604 set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DELAY, tmp); 604 (unsigned long long) tmp);
605 } 605 set_metric (&man_handle.general, TM_SEND,
606 606 GNUNET_ATS_QUALITY_NET_DISTANCE, tmp);
607 607 }
608 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, 608
609 "transport", "MANIPULATE_DELAY_OUT", &tmp) && (tmp > 0)) 609 if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_time (GST_cfg,
610 { 610 "transport",
611 GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Delaying outbound traffic for %llu ms\n", 611 "MANIPULATE_DELAY_IN",
612 (unsigned long long) tmp); 612 &delay)) &&
613 set_metric (&man_handle.general, TM_SEND, GNUNET_ATS_QUALITY_NET_DELAY, tmp); 613 (delay.rel_value_us > 0) )
614 } 614 {
615 615 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
616 man_handle.peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); 616 "Delaying inbound traffic for %s\n",
617 GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
618 set_metric (&man_handle.general, TM_RECEIVE,
619 GNUNET_ATS_QUALITY_NET_DELAY,
620 delay.rel_value_us);
621 }
622 if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_time (GST_cfg,
623 "transport",
624 "MANIPULATE_DELAY_OUT",
625 &delay)) &&
626 (delay.rel_value_us > 0) )
627 {
628 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
629 "Delaying outbound traffic for %s\n",
630 GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES));
631 set_metric (&man_handle.general,
632 TM_SEND,
633 GNUNET_ATS_QUALITY_NET_DELAY,
634 delay.rel_value_us);
635 }
636 man_handle.peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO);
617} 637}
618 638
619 639
@@ -622,33 +642,36 @@ free_tmps (void *cls,
622 const struct GNUNET_HashCode * key, 642 const struct GNUNET_HashCode * key,
623 void *value) 643 void *value)
624{ 644{
625 struct DelayQueueEntry *dqe; 645 struct DelayQueueEntry *dqe;
626 struct DelayQueueEntry *next; 646 struct DelayQueueEntry *next;
627 if (NULL != value) 647
628 { 648 if (NULL != value)
629 struct TM_Peer *tmp = (struct TM_Peer *) value; 649 {
630 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (man_handle.peers, key, value)) 650 struct TM_Peer *tmp = (struct TM_Peer *) value;
631 GNUNET_break (0); 651
632 free_metric (tmp); 652 if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (man_handle.peers, key, value))
633 next = tmp->send_head; 653 GNUNET_break (0);
634 while (NULL != (dqe = next)) 654 free_metric (tmp);
635 { 655 next = tmp->send_head;
636 next = dqe->next; 656 while (NULL != (dqe = next))
637 GNUNET_CONTAINER_DLL_remove (tmp->send_head, tmp->send_tail, dqe); 657 {
638 if (NULL != dqe->cont) 658 next = dqe->next;
639 dqe->cont (dqe->cont_cls, GNUNET_SYSERR, dqe->msg_size, 0); 659 GNUNET_CONTAINER_DLL_remove (tmp->send_head, tmp->send_tail, dqe);
640 GNUNET_free (dqe); 660 if (NULL != dqe->cont)
641 } 661 dqe->cont (dqe->cont_cls, GNUNET_SYSERR, dqe->msg_size, 0);
642 if (GNUNET_SCHEDULER_NO_TASK != tmp->send_delay_task) 662 GNUNET_free (dqe);
643 { 663 }
644 GNUNET_SCHEDULER_cancel (tmp->send_delay_task); 664 if (GNUNET_SCHEDULER_NO_TASK != tmp->send_delay_task)
645 tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK; 665 {
646 } 666 GNUNET_SCHEDULER_cancel (tmp->send_delay_task);
647 GNUNET_free (tmp); 667 tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK;
648 } 668 }
649 return GNUNET_OK; 669 GNUNET_free (tmp);
670 }
671 return GNUNET_OK;
650} 672}
651 673
674
652/** 675/**
653 * Notify manipulation about disconnect so it can discard queued messages 676 * Notify manipulation about disconnect so it can discard queued messages
654 * 677 *