diff options
Diffstat (limited to 'src/util/bandwidth.c')
-rw-r--r-- | src/util/bandwidth.c | 9 |
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 | */ |
137 | void | 140 | void |
138 | GNUNET_BANDWIDTH_tracker_init (struct GNUNET_BANDWIDTH_Tracker *av, | 141 | GNUNET_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 | } |