aboutsummaryrefslogtreecommitdiff
path: root/src/util/bandwidth.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/bandwidth.c')
-rw-r--r--src/util/bandwidth.c9
1 files changed, 9 insertions, 0 deletions
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,
120} 120}
121 121
122 122
123
123/** 124/**
124 * Initialize bandwidth tracker. Note that in addition to the 125 * Initialize bandwidth tracker. Note that in addition to the
125 * 'max_carry_s' limit, we also always allow at least 126 * '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,
130 * bytes). 131 * bytes).
131 * 132 *
132 * @param av tracker to initialize 133 * @param av tracker to initialize
134 * @param update_cb callback to notify a client about the tracker being updated
135 * @param update_cb_cls cls for the callback
133 * @param bytes_per_second_limit initial limit to assume 136 * @param bytes_per_second_limit initial limit to assume
134 * @param max_carry_s maximum number of seconds unused bandwidth 137 * @param max_carry_s maximum number of seconds unused bandwidth
135 * may accumulate before it expires 138 * may accumulate before it expires
136 */ 139 */
137void 140void
138GNUNET_BANDWIDTH_tracker_init (struct GNUNET_BANDWIDTH_Tracker *av, 141GNUNET_BANDWIDTH_tracker_init (struct GNUNET_BANDWIDTH_Tracker *av,
142 GNUNET_BANDWIDTH_tracker_update_cb update_cb,
143 void *update_cb_cls,
139 struct GNUNET_BANDWIDTH_Value32NBO 144 struct GNUNET_BANDWIDTH_Value32NBO
140 bytes_per_second_limit, uint32_t max_carry_s) 145 bytes_per_second_limit, uint32_t max_carry_s)
141{ 146{
147 av->update_cb = update_cb;
148 av->update_cb_cls = update_cb_cls;
142 av->consumption_since_last_update__ = 0; 149 av->consumption_since_last_update__ = 0;
143 av->last_update__ = GNUNET_TIME_absolute_get (); 150 av->last_update__ = GNUNET_TIME_absolute_get ();
144 av->available_bytes_per_s__ = ntohl (bytes_per_second_limit.value__); 151 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,
327 update_tracker (av); 334 update_tracker (av);
328 old_limit = av->available_bytes_per_s__; 335 old_limit = av->available_bytes_per_s__;
329 av->available_bytes_per_s__ = new_limit; 336 av->available_bytes_per_s__ = new_limit;
337 if (NULL != av->update_cb)
338 av->update_cb (av->update_cb_cls);
330 if (old_limit > new_limit) 339 if (old_limit > new_limit)
331 update_tracker (av); /* maximum excess might be less now */ 340 update_tracker (av); /* maximum excess might be less now */
332} 341}