1 #ifndef LIBFILEZILLA_RATE_LIMITED_LAYER_HEADER
2 #define LIBFILEZILLA_RATE_LIMITED_LAYER_HEADER
24 virtual int read(
void*
buffer,
unsigned int size,
int& error)
override;
25 virtual int write(
void const*
buffer,
unsigned int size,
int& error)
override;
30 virtual void wakeup(direction::type d)
override;
47 virtual int read(
void*
buffer,
unsigned int size,
int& error)
override;
48 virtual int write(
void const*
buffer,
unsigned int size,
int& error)
override;
51 return next_layer_.get_state();
54 virtual int connect(
native_string const& host,
unsigned int port, address_type family = address_type::unknown)
override {
55 return next_layer_.connect(host, port, family);
59 return next_layer_.shutdown();
66 friend class crll_bucket;
67 std::vector<std::unique_ptr<crll_bucket>> buckets_;
A rate-limited token bucket.
Definition: rate_limiter.hpp:253
The buffer class is a simple buffer where data can be appended at the end and consumed at the front....
Definition: buffer.hpp:27
A compound rate-limited socket layer.
Definition: rate_limited_layer.hpp:39
virtual void set_event_handler(event_handler *handler, fz::socket_event_flag retrigger_block=socket_event_flag{}) override
The handler for any events generated (or forwarded) by this layer.
virtual int shutdown() override
Signals peers that we want to close the connections.
Definition: rate_limited_layer.hpp:58
Simple handler for asynchronous event processing.
Definition: event_handler.hpp:55
Lean replacement for std::(recursive_)mutex.
Definition: mutex.hpp:52
A rate-limited socket layer.
Definition: rate_limited_layer.hpp:19
virtual void wakeup(direction::type d) override
Called in response to unlock_tree if tokens have become available.
virtual void set_event_handler(event_handler *handler, socket_event_flag retrigger_block=socket_event_flag{}) override
The handler for any events generated (or forwarded) by this layer.
A limiter for the attached buckets.
Definition: rate_limiter.hpp:185
Interface for sockets.
Definition: socket.hpp:375
A base class for socket layers.
Definition: socket.hpp:654
The namespace used by libfilezilla.
Definition: apply.hpp:17
std::wstring native_string
A string in the system's native character type and encoding. Note: This typedef changes depending on...
Definition: string.hpp:34
socket_state
State transitions are monotonically increasing.
Definition: socket.hpp:343
@ read
Data has become available.
@ write
data can be written.
socket_event_flag
The type of a socket event.
Definition: socket.hpp:35
Classes for rate-limiting.
Socket classes for networking.