libfilezilla
Classes | Public Member Functions | Friends | List of all members
rate_limiter Class Referencefinal

A limiter for the attached buckets. More...

#include <rate_limiter.hpp>

Inheritance diagram for rate_limiter:
Inheritance graph
[legend]
Collaboration diagram for rate_limiter:
Collaboration graph
[legend]

Public Member Functions

 rate_limiter (rate_limit_manager *mgr)
 
void add (bucket_base *bucket)
 Adds a bucket to the limiter. More...
 
void set_limits (rate::type download_limit, rate::type upload_limit)
 Sets the number of octets all buckets combined may consume each second. More...
 
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 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: