8#ifndef INCLUDED_BALB_RATELIMITER
9#define INCLUDED_BALB_RATELIMITER
327#include <balscm_version.h>
335#include <bsl_algorithm.h>
336#include <bsl_climits.h>
338#include <bsl_c_limits.h>
587 d_peakRateBucket.
reserve(numUnits);
588 d_sustainedRateBucket.
reserve(numUnits);
594 d_peakRateBucket.
reset(currentTime);
595 d_sustainedRateBucket.
reset(currentTime);
611 ULLONG_MAX - d_sustainedRateBucket.
unitsInBucket()- numUnits);
619 d_peakRateBucket.
submit(numUnits);
620 d_sustainedRateBucket.
submit(numUnits);
659 d_sustainedRateBucket.
getStatistics(submittedUnits, unusedUnits);
691 return d_sustainedRateBucket.
drainRate();
Definition balb_leakybucket.h:421
void submitReserved(bsls::Types::Uint64 numUnits)
Definition balb_leakybucket.h:731
bsls::Types::Uint64 unitsInBucket() const
Return the number of submitted units in this leaky bucket.
Definition balb_leakybucket.h:766
void submit(bsls::Types::Uint64 numUnits)
Definition balb_leakybucket.h:716
void reserve(bsls::Types::Uint64 numUnits)
Definition balb_leakybucket.h:683
bsls::TimeInterval lastUpdateTime() const
Return the time interval when this leaky bucket was last updated.
Definition balb_leakybucket.h:754
void reset(const bsls::TimeInterval ¤tTime)
Definition balb_leakybucket.h:697
void getStatistics(bsls::Types::Uint64 *submittedUnits, bsls::Types::Uint64 *unusedUnits) const
bool wouldOverflow(const bsls::TimeInterval ¤tTime)
bsls::TimeInterval statisticsCollectionStartTime() const
Definition balb_leakybucket.h:760
void updateState(const bsls::TimeInterval ¤tTime)
static bsls::TimeInterval calculateTimeWindow(bsls::Types::Uint64 drainRate, bsls::Types::Uint64 capacity)
bsls::Types::Uint64 unitsReserved() const
Return the number of reserved units in this leaky bucket.
Definition balb_leakybucket.h:772
bsls::Types::Uint64 drainRate() const
Return the drain rate of this leaky bucket.
Definition balb_leakybucket.h:748
bsls::Types::Uint64 capacity() const
Return the capacity of this leaky bucket.
Definition balb_leakybucket.h:742
void cancelReserved(bsls::Types::Uint64 numUnits)
Definition balb_leakybucket.h:670
void resetStatistics()
Definition balb_leakybucket.h:708
Definition balb_ratelimiter.h:379
void setRateLimits(bsls::Types::Uint64 sustainedRateLimit, const bsls::TimeInterval &sustainedRateWindow, bsls::Types::Uint64 peakRateLimit, const bsls::TimeInterval &peakRateWindow)
void reset(const bsls::TimeInterval ¤tTime)
Definition balb_ratelimiter.h:592
static bool supportsRateLimitsExactly(bsls::Types::Uint64 sustainedRateLimit, const bsls::TimeInterval &sustainedRateWindow, bsls::Types::Uint64 peakRateLimit, const bsls::TimeInterval &peakRateWindow)
bsls::Types::Uint64 unitsReserved() const
Return the number of reserved units for this rate limiter.
Definition balb_ratelimiter.h:702
void getStatistics(bsls::Types::Uint64 *submittedUnits, bsls::Types::Uint64 *unusedUnits) const
Definition balb_ratelimiter.h:651
bsls::TimeInterval sustainedRateWindow() const
Definition balb_ratelimiter.h:695
~RateLimiter()
Destroy this object.
bsls::TimeInterval statisticsCollectionStartTime() const
Definition balb_ratelimiter.h:683
bsls::TimeInterval lastUpdateTime() const
Return the time when this rate limiter was last updated.
Definition balb_ratelimiter.h:663
bsls::TimeInterval peakRateWindow() const
Definition balb_ratelimiter.h:676
bsls::TimeInterval calculateTimeToSubmit(const bsls::TimeInterval ¤tTime)
bool wouldExceedBandwidth(const bsls::TimeInterval ¤tTime)
Definition balb_ratelimiter.h:643
void updateState(const bsls::TimeInterval ¤tTime)
Definition balb_ratelimiter.h:636
void resetStatistics()
Definition balb_ratelimiter.h:599
void cancelReserved(bsls::Types::Uint64 numUnits)
Definition balb_ratelimiter.h:568
void submitReserved(bsls::Types::Uint64 numUnits)
Definition balb_ratelimiter.h:624
bsls::Types::Uint64 sustainedRateLimit() const
Return the sustained rate of this rate limiter.
Definition balb_ratelimiter.h:689
void submit(bsls::Types::Uint64 numUnits)
Definition balb_ratelimiter.h:605
RateLimiter(bsls::Types::Uint64 sustainedRateLimit, const bsls::TimeInterval &sustainedRateWindow, bsls::Types::Uint64 peakRateLimit, const bsls::TimeInterval &peakRateWindow, const bsls::TimeInterval ¤tTime)
void reserve(bsls::Types::Uint64 numUnits)
Definition balb_ratelimiter.h:577
bsls::Types::Uint64 peakRateLimit() const
Return the peak rate of this rate limiter.
Definition balb_ratelimiter.h:670
Definition bsls_timeinterval.h:307
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition balb_controlmanager.h:144
unsigned long long Uint64
Definition bsls_types.h:139