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. More... | |
virtual void | update_stats (bool &active)=0 |
Updates weight and usage statistics. More... | |
virtual size_t | weight () const |
Returns the weight of the tree. More... | |
virtual size_t | unsaturated (direction::type const) const |
Returns the number of buckets not yet full. More... | |
virtual void | set_mgr_recursive (rate_limit_manager *mgr) |
Recursively sets the manager. More... | |
virtual rate::type | add_tokens (direction::type const, rate::type, rate::type)=0 |
Recursively adds tokens. More... | |
virtual rate::type | distribute_overflow (direction::type const, rate::type) |
Recursively distributes overflow. More... | |
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. More... | |
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.
|
inlineprotectedvirtual |
Recursively locks the mutexes of self and all children.
Aggregate buckets need to implement the child traversal.
|
virtual |
Removes the bucket from its parent
Reimplemented in bucket.
|
protectedvirtual |
Recursively sets the manager.
Must only be called with a locked tree
|
inlineprotectedvirtual |
Returns the number of buckets not yet full.
Must only be called with a locked mutex
|
protectedpure virtual |
Updates weight and usage statistics.
Must only be called with a locked tree
|
inlineprotectedvirtual |
Returns the weight of the tree.
Must only be called with a locked mutex