summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/token_bucket.c13
-rw-r--r--src/common/token_bucket.h4
2 files changed, 11 insertions, 6 deletions
diff --git a/src/common/token_bucket.c b/src/common/token_bucket.c
index 747189e751..f2396ec58a 100644
--- a/src/common/token_bucket.c
+++ b/src/common/token_bucket.c
@@ -238,13 +238,18 @@ token_bucket_rw_dec_write(token_bucket_rw_t *bucket,
/**
* As token_bucket_rw_dec_read and token_bucket_rw_dec_write, in a single
- * operation.
+ * operation. Return a bitmask of TB_READ and TB_WRITE to indicate
+ * which buckets became empty.
*/
-void
+int
token_bucket_rw_dec(token_bucket_rw_t *bucket,
ssize_t n_read, ssize_t n_written)
{
- token_bucket_rw_dec_read(bucket, n_read);
- token_bucket_rw_dec_write(bucket, n_written);
+ int flags = 0;
+ if (token_bucket_rw_dec_read(bucket, n_read))
+ flags |= TB_READ;
+ if (token_bucket_rw_dec_write(bucket, n_written))
+ flags |= TB_WRITE;
+ return flags;
}
diff --git a/src/common/token_bucket.h b/src/common/token_bucket.h
index fb5d9fc60a..0e7832e838 100644
--- a/src/common/token_bucket.h
+++ b/src/common/token_bucket.h
@@ -85,8 +85,8 @@ int token_bucket_rw_dec_read(token_bucket_rw_t *bucket,
int token_bucket_rw_dec_write(token_bucket_rw_t *bucket,
ssize_t n);
-void token_bucket_rw_dec(token_bucket_rw_t *bucket,
- ssize_t n_read, ssize_t n_written);
+int token_bucket_rw_dec(token_bucket_rw_t *bucket,
+ ssize_t n_read, ssize_t n_written);
static inline size_t token_bucket_rw_get_read(const token_bucket_rw_t *bucket);
static inline size_t