libfilezilla
Public Member Functions | Static Public Member Functions | Friends | List of all members
listen_socket Class Referencefinal

Simple Listen socket. More...

#include <socket.hpp>

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

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. More...
 
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. More...
 
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. More...
 
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. More...
 
int local_port (int &error) const
 Returns local port of a connected socket. More...
 
bool bind (std::string const &address)
 Bind socket to the specific local IP. More...
 
- Public Member Functions inherited from socket_event_source
socket_event_sourceroot () const
 Gets the root source. More...
 

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)
 
int close ()
 
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: