![]() |
libfilezilla
|
A rate-limited socket layer. More...
#include <rate_limited_layer.hpp>
Public Member Functions | |
rate_limited_layer (event_handler *handler, socket_interface &next_layer, rate_limiter *limiter=nullptr) | |
virtual int | read (void *buffer, unsigned int size, int &error) override |
virtual int | write (void const *buffer, unsigned int size, int &error) override |
virtual socket_state | get_state () const override |
virtual int | connect (native_string const &host, unsigned int port, address_type family=address_type::unknown) override |
virtual int | shutdown () override |
Signals peers that we want to close the connections. More... | |
virtual void | set_event_handler (event_handler *handler) override |
The handler for any events generated (or forwarded) by this layer. | |
![]() | |
socket_layer (event_handler *handler, socket_interface &next_layer, bool event_passthrough) | |
socket_layer (socket_layer const &)=delete | |
socket_layer & | operator= (socket_layer const &)=delete |
virtual native_string | peer_host () const override |
virtual int | peer_port (int &error) const override |
socket_interface & | next () |
The next layer further down. Usually another layer or the actual socket. | |
virtual int | shutdown_read () override |
Check that all layers further down also have reached EOF. More... | |
![]() | |
socket_interface (socket_interface const &)=delete | |
socket_interface & | operator= (socket_interface const &)=delete |
![]() | |
socket_event_source * | root () const |
Gets the root source. More... | |
Protected Member Functions | |
virtual void | wakeup (direction::type d) override |
Called in response to unlock_tree if tokens have become available. More... | |
![]() | |
void | forward_socket_event (socket_event_source *source, socket_event_flag t, int error) |
void | forward_hostaddress_event (socket_event_source *source, std::string const &address) |
void | set_event_passthrough () |
![]() | |
socket_interface (socket_event_source *root) | |
![]() | |
socket_event_source (socket_event_source *root) | |
Additional Inherited Members | |
![]() | |
event_handler * | event_handler_ {} |
socket_interface & | next_layer_ |
bool | event_passthrough_ {} |
![]() | |
socket_event_source *const | root_ {} |
A rate-limited socket layer.
This socket layer is a bucket that can be added to a
|
inlineoverridevirtual |
Signals peers that we want to close the connections.
Only disallows further sends, does not affect reading from the socket.
Returns 0 on success, an error code otherwise. If it returns EGAIN, shutdown is not yet complete. Call shutdown again after the next write event.
Implements socket_interface.
|
overrideprotectedvirtual |
Called in response to unlock_tree if tokens have become available.
Override in derived classes to signal token availability to consumers.
Reimplemented from bucket.