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

Simple Listen socket. More...

#include <socket.hpp>

Inheritance diagram for listen_socket:
Collaboration diagram for listen_socket:

Public Member Functions

 listen_socket (thread_pool &pool, event_handler *evt_handler)
 listen_socket (listen_socket const &)=delete
listen_socketoperator= (listen_socket const &)=delete
int listen (address_type family, int port=0)
 Starts listening.
std::unique_ptr< socketaccept (int &error, fz::event_handler *handler=nullptr)
 Accepts incoming connection. If no socket is returned, error contains the reason.
socket_descriptor fast_accept (int &error)
 Like accept, but only returns a socket descriptor.
listen_socket_state get_state () const
void set_event_handler (event_handler *pEvtHandler)
Public Member Functions inherited from socket_base
int set_buffer_sizes (int size_receive, int size_send)
 Sets socket buffer sizes.
address_type address_family () const
 If connected, either ipv4, ipv6 or unix, unknown otherwise.
std::string local_ip (bool strip_zone_index=false) const
 Returns local address of a connected socket.
int local_port (int &error) const
 Returns local port of a connected socket.
bool bind (std::string const &address)
 Bind socket to the specific local IP.
int close ()
Public Member Functions inherited from socket_event_source
socket_event_sourceroot () const
 Gets the root source.

Static Public Member Functions

static std::unique_ptr< listen_socketfrom_descriptor (socket_descriptor &&desc, thread_pool &pool, int &error, fz::event_handler *handler=nullptr)
Static Public Member Functions inherited from socket_base
static std::string address_to_string (sockaddr const *addr, int addr_len, bool with_port=true, bool strip_zone_index=false)
static std::string address_to_string (char const *buf, int buf_len)

Friends

class socket_base
class socket_thread

Additional Inherited Members

Public Types inherited from socket_base
typedef intptr_t socket_t
Protected Member Functions inherited from socket_base
 socket_base (thread_pool &pool, event_handler *evt_handler, socket_event_source *ev_source)
void detach_thread (scoped_lock &l)
Protected Member Functions inherited from socket_event_source
 socket_event_source (socket_event_source *root)
Protected Attributes inherited from socket_base
thread_poolthread_pool_
event_handlerevt_handler_
socket_thread * socket_thread_ {}
socket_event_source *const ev_source_ {}
socket_t fd_ {-1}
unsigned int port_ {}
int family_
int buffer_sizes_ [2]
Protected Attributes inherited from socket_event_source
socket_event_source *const root_ {}

Detailed Description

Simple Listen socket.

When a client connects, a socket event with the connection flag is send.

Call accept to accept.

Member Function Documentation

◆ fast_accept()

socket_descriptor fast_accept ( int & error)

Like accept, but only returns a socket descriptor.

Best suited for tight accept loops where the descriptor is handed off to other threads.

◆ listen()

int listen ( address_type family,
int port = 0 )

Starts listening.

If no port is given, let the operating system decide on a port. Can use local_port to query it afterwards.

The address type, if not fz::address_type::unknown, must may the type of the address passed to bind()


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