From e34f367380ed951b51895e24d99a81a12899278c Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 30 Jan 2014 14:16:20 +0000 Subject: extending bandwidth tracker api to support notifications --- src/util/bandwidth.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/util/bandwidth.c') diff --git a/src/util/bandwidth.c b/src/util/bandwidth.c index 79497ad51..f056c1aee 100644 --- a/src/util/bandwidth.c +++ b/src/util/bandwidth.c @@ -120,6 +120,7 @@ GNUNET_BANDWIDTH_value_get_delay_for (struct GNUNET_BANDWIDTH_Value32NBO bps, } + /** * Initialize bandwidth tracker. Note that in addition to the * 'max_carry_s' limit, we also always allow at least @@ -130,15 +131,21 @@ GNUNET_BANDWIDTH_value_get_delay_for (struct GNUNET_BANDWIDTH_Value32NBO bps, * bytes). * * @param av tracker to initialize + * @param update_cb callback to notify a client about the tracker being updated + * @param update_cb_cls cls for the callback * @param bytes_per_second_limit initial limit to assume * @param max_carry_s maximum number of seconds unused bandwidth * may accumulate before it expires */ void GNUNET_BANDWIDTH_tracker_init (struct GNUNET_BANDWIDTH_Tracker *av, + GNUNET_BANDWIDTH_tracker_update_cb update_cb, + void *update_cb_cls, struct GNUNET_BANDWIDTH_Value32NBO bytes_per_second_limit, uint32_t max_carry_s) { + av->update_cb = update_cb; + av->update_cb_cls = update_cb_cls; av->consumption_since_last_update__ = 0; av->last_update__ = GNUNET_TIME_absolute_get (); av->available_bytes_per_s__ = ntohl (bytes_per_second_limit.value__); @@ -327,6 +334,8 @@ GNUNET_BANDWIDTH_tracker_update_quota (struct GNUNET_BANDWIDTH_Tracker *av, update_tracker (av); old_limit = av->available_bytes_per_s__; av->available_bytes_per_s__ = new_limit; + if (NULL != av->update_cb) + av->update_cb (av->update_cb_cls); if (old_limit > new_limit) update_tracker (av); /* maximum excess might be less now */ } -- cgit v1.2.3