libfilezilla
Loading...
Searching...
No Matches
rate_limiter Class Referencefinal

A limiter for the attached buckets. More...

#include <rate_limiter.hpp>

Inheritance diagram for rate_limiter:
Collaboration diagram for rate_limiter:

Public Member Functions

 rate_limiter (rate_limit_manager *mgr)
 
void add (bucket_base *bucket)
 Adds a bucket to the limiter.
 
void set_limits (rate::type download_limit, rate::type upload_limit)
 Sets the number of octets all buckets combined may consume each second.
 
rate::type limit (direction::type const d)
 Returns current limit.
 
- Public Member Functions inherited from bucket_base
virtual void remove_bucket ()
 

Friends

class bucket_base
 
class rate_limit_manager
 

Additional Inherited Members

- Protected Member Functions inherited from bucket_base
- Protected Attributes inherited from bucket_base
mutex mtx_ {false}
 
rate_limit_managermgr_ {}
 
void * parent_ {}
 
size_t idx_ {static_cast<size_t>(-1)}
 

Detailed Description

A limiter for the attached buckets.

Distributes tokens fairly between buckets, with overflow distributed so that the total limit is not exceeded.

Limiters can either be added to rate_limit_manager, or as sub-limiter to another limiter. For leaf buckets, the actual rate limit is the lowest limit imposed by any of its parents.

Member Function Documentation

◆ add()

void add ( bucket_base * bucket)

Adds a bucket to the limiter.

Child buckets get removed automatically when they are destroyed, or manually when the child's remove_bucket is called.

◆ set_limits()

void set_limits ( rate::type download_limit,
rate::type upload_limit )

Sets the number of octets all buckets combined may consume each second.

Pass rate::unlimited if there should be no limit.

The default limit is rate::unlimited.


The documentation for this class was generated from the following file: