![]() |
libfilezilla
|
Base class for buckets. More...
#include <rate_limiter.hpp>
Public Member Functions | |
virtual void | remove_bucket () |
Protected Member Functions | |
virtual void | lock_tree () |
Recursively locks the mutexes of self and all children. | |
virtual void | update_stats (bool &active)=0 |
Updates weight and usage statistics. | |
virtual size_t | weight () const |
Returns the weight of the tree. | |
virtual size_t | unsaturated (direction::type const) const |
Returns the number of buckets not yet full. | |
virtual void | set_mgr_recursive (rate_limit_manager *mgr) |
Recursively sets the manager. | |
virtual rate::type | add_tokens (direction::type const, rate::type, rate::type)=0 |
Recursively adds tokens. | |
virtual rate::type | distribute_overflow (direction::type const, rate::type) |
Recursively distributes overflow. | |
virtual void | unlock_tree () |
Recursively unlocks the mutexes of self and all children. | |
virtual std::array< rate::type, 2 > | gather_unspent_for_removal ()=0 |
Gather unspent tokens during removal to repay debt. | |
Protected Attributes | |
mutex | mtx_ {false} |
rate_limit_manager * | mgr_ {} |
void * | parent_ {} |
size_t | idx_ {static_cast<size_t>(-1)} |
Friends | |
class | rate_limiter |
Base class for buckets.
|
protectedpure virtual |
Recursively adds tokens.
Arguments are normalized for a single bucket. For total added, multiply by weight.
Must only be called with a locked tree
|
inlineprotectedvirtual |
Recursively distributes overflow.
Arguments are normalized for a single bucket. For total added, multiply by weight.
Must only be called with a locked tree
|
protectedpure virtual |
Gather unspent tokens during removal to repay debt.
When called, this is locked, children are not.
Recursively locks the mutexes of self and all children.
Aggregate buckets need to implement the child traversal.
Removes the bucket from its parent
Reimplemented in bucket.
|
protectedvirtual |
Recursively sets the manager.
Must only be called with a locked tree
Returns the number of buckets not yet full.
Must only be called with a locked mutex
Updates weight and usage statistics.
Must only be called with a locked tree
Returns the weight of the tree.
Must only be called with a locked mutex