UCommon
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | Friends
ucommon::Socket Class Reference

A generic socket base class. More...

#include <socket.h>

Inheritance diagram for ucommon::Socket:
Inheritance graph
[legend]

Data Structures

class  address
 A generic socket address class. More...

Public Types

typedef void * set_t
 External definition of fd_set type.

Public Member Functions

int blocking (bool enable)
 Set socket blocking I/O mode.
int broadcast (bool enable)
 Set socket for unicast mode broadcasts.
void cancel (void)
 Cancel pending i/o by shutting down the socket.
int connectto (struct addrinfo *list)
 Connect our socket to a remote host from an address list.
int disconnect (void)
 Disconnect a connected socket.
int drop (struct addrinfo *list)
 Drop socket from multicast group.
int err (void)
 Get error code.
int getError (void)
 Get socket error code.
unsigned getPending (void)
 Get the number of bytes of data in the socket receive buffer.
int gettype (void)
 Get the type of a socket.
bool isConnected (void)
 Test if socket is connected.
bool isPending (unsigned value)
 See the number of bytes in the receive queue.
int join (struct addrinfo *list)
 Join socket to multicast group.
int keepalive (bool enable)
 Set socket for keepalive packets.
int loopback (bool enable)
 Set loopback to read multicast packets we broadcast.
int multicast (unsigned ttl=1)
 Set multicast mode and multicast broadcast range.
int nodelay (void)
 Set nodelay option for tcp socket.
 operator bool ()
 Test if socket is valid.
 operator socket_t ()
 Get the socket descriptor by casting.
bool operator! ()
 Test if socket is invalid.
socket_t operator* ()
 Get the socket descriptor by pointer reference.
Socketoperator= (socket_t socket)
 Assign socket from a socket descriptor.
size_t peek (void *data, size_t number)
 Peek at data waiting in the socket receive buffer.
size_t printf (char *format,...)
 Print formatted string to socket.
int priority (int scheduling)
 Set packet priority, 0 to 6 unless privileged.
size_t readfrom (void *data, size_t number, struct sockaddr_storage *address=((void *) 0))
 Read data from the socket receive buffer.
size_t readline (char *data, size_t size)
 Read a newline of text data from the socket and save in NULL terminated string.
size_t readline (string &buffer)
 Read a string of input from the socket and strip trailing newline.
int recvsize (unsigned size)
 Set the size of the socket receive buffer.
void release (void)
 Shutdown and close the socket.
unsigned segsize (unsigned size)
 Set segment size and get mtu of a socket.
int sendsize (unsigned size)
 Set the size of the socket send buffer.
int sendwait (unsigned size)
 Set the size to wait before sending.
bool setccid (uint8_t ccid)
 Set ccid of dccp socket.
void shutdown (void)
 Shutdown the socket communication channel.
 Socket ()
 Create a socket object for use.
 Socket (Socket &existing)
 Create socket as duped handle of existing socket.
 Socket (socket_t socket)
 Create socket from existing socket descriptor.
 Socket (struct addrinfo *address)
 Create and connect a socket to an address from an address list.
 Socket (int family, int type, int protocol=0)
 Create an unbound socket of a specific type.
 Socket (char *address, char *port, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create a bound socket.
int tos (int type)
 Set the type of service field of outgoing packets.
int ttl (unsigned char time)
 Set the time to live before packets expire.
int wait (timeout_t timeout=Timer::inf)
 Socket i/o timer setting.
bool waitPending (timeout_t timeout=0)
 Test for pending input data.
bool waitSending (timeout_t timeout=0)
 Test for output data sent.
size_t writes (char *string)
 Write a null terminated string to the socket.
size_t writeto (void *data, size_t number, struct sockaddr *address=((void *) 0))
 Write data to the socket send buffer.
virtual ~Socket ()
 Shutdown, close, and destroy socket.

Static Public Member Functions

static socket_t acceptfrom (socket_t socket, struct sockaddr_storage *address=((void *) 0))
 Accept a socket connection from a remote host.
static Socket acceptfrom (Socket &socket, struct sockaddr_storage *address)
 Accept connection through socket.
static int bindto (socket_t socket, char *address, char *service, int protocol=0)
 Bind the socket descriptor to a known interface and service port.
static int bindto (socket_t socket, struct sockaddr *address)
 Bind the socket descriptor to a known interface.
static int blocking (socket_t socket, bool enable)
 Set socket blocking I/O mode of socket descriptor.
static int broadcast (socket_t socket, bool enable)
 Set socket for unicast mode broadcasts on socket descriptor.
static void cancel (socket_t socket)
 Cancel pending i/o by shutting down the socket.
static void clear (set_t mask)
 Clear a mask, setting all entries to zero.
static void clear (socket_t socket, set_t mask)
 Clear a socket entry in a mask.
static int connectto (socket_t socket, struct addrinfo *list)
 Connect socket descriptor to a remote host from an address list.
static void connectto (Socket &socket, Socket::address &address)
 Connect a socket.
static unsigned copy (struct sockaddr *target, struct sockaddr *origin)
 Copy a socket address.
static socket_t create (int family, int type, int protocol)
 Create a socket object unbound.
static socket_t create (struct addrinfo *address, int type, int protocol)
 Create a connected socket.
static socket_t create (char *iface, char *service, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create a bound socket for a service.
static socket_t create (Socket::address &address)
 Create a connected socket for a service.
static int disconnect (socket_t socket)
 Disconnect a connected socket descriptor.
static void disconnect (Socket &socket)
 Disconnect a connected socket.
static int drop (socket_t socket, struct addrinfo *list)
 Drop socket descriptor from multicast group.
static bool equal (struct sockaddr *address1, struct sockaddr *address2)
 Compare socket addresses.
static bool equalfrom (struct sockaddr_storage *address1, struct sockaddr_storage *address2)
 Compare socket addresses.
static bool equalhost (struct sockaddr *address1, struct sockaddr *address2)
 Compare socket host addresses.
static bool equalinet (struct sockaddr_internet *address1, struct sockaddr_internet *address2)
 Compare socket addresses.
static int error (socket_t socket)
 Get socket error code of socket descriptor.
static int error (void)
 Return error code of last socket operation,.
static void family (int query)
 Set default socket family preference for query options when the socket type is otherwise not specified.
static socklen_t getaddr (socket_t socket, struct sockaddr_storage *address, char *hostname, char *service)
 Lookup a host name and service address based on the addressing family and socket type of a socket descriptor.
static struct addrinfogetaddress (char *host, char *service, int type=SOCK_STREAM, int protocol=0)
 Get an address list directly.
static char * getaddress (struct sockaddr *address, char *buffer, socklen_t size)
 Get the hostname of a socket address.
static int getfamily (socket_t socket)
 Get the address family of the socket descriptor.
static int getfamily (struct sockaddr_storage &address)
 Get the address family of a socket address object.
static int getfamily (struct sockaddr_internet &address)
 Get the address family of an internet socket address object.
static struct addrinfogethint (socket_t socket, struct addrinfo *hint)
 Create an address info lookup hint based on the family and type properties of a socket descriptor.
static char * gethostname (struct sockaddr *address, char *buffer, size_t size)
 Lookup and return the host name associated with a socket address.
static int getinterface (struct sockaddr *address, struct sockaddr *destination)
 Get the socket address of the interface needed to reach a destination address.
static socklen_t getlen (struct sockaddr *address)
 Get the size of a socket address.
static int getlocal (socket_t socket, struct sockaddr_storage *address)
 Get local address to which the socket is bound.
static set_t getmask (void)
 Get a mask from the heap.
static int getremote (socket_t socket, struct sockaddr_storage *address)
 Get remote address to which the socket is connected.
static short getservice (struct sockaddr *address)
 Get the service port of a socket.
static int gettype (socket_t socket)
 Get the type of a socket.
static short inetservice (struct sockaddr_internet *address)
 Get the service port of an inet socket.
static void init (void)
 Initialize socket subsystem.
static void init (char *program)
 Initialize with program name.
static bool isNull (char *string)
 Simple function to validate that a given IP address string is a "zero" address.
static bool isNumeric (char *string)
 Simple function to validate that a given IP address string is a numeric address.
static int join (socket_t socket, struct addrinfo *list)
 Join socket descriptor to multicast group.
static int keepalive (socket_t socket, bool enable)
 Set socket for keepalive packets for socket descriptor.
static unsigned keyhost (struct sockaddr *address, unsigned size)
 Convert a socket host address into a hash map index.
static unsigned keyindex (struct sockaddr *address, unsigned size)
 Convert a socket address and service into a hash map index.
static int listento (socket_t socket, struct sockaddr *address, int backlog=5)
 Bind the socket descriptor to a known interface listen on service port.
static int loopback (socket_t socket, bool enable)
 Set loopback to read multicast packets socket descriptor broadcasts.
static int multicast (socket_t socket, unsigned ttl=1)
 Set multicast mode and multicast broadcast range for socket descriptor.
static int nodelay (socket_t socket)
 Set tcp nodelay option on socket descriptor.
static unsigned pending (socket_t socket)
 Get the number of bytes pending in the receive buffer of a socket descriptor.
static ssize_t printf (socket_t socket, char *format,...)
 Print formatted string to socket.
static int priority (socket_t socket, int scheduling)
 Set packet priority of socket descriptor.
static size_t readfrom (Socket &socket, char *buffer, size_t size, struct sockaddr_storage *address)
 receive from socket object.
static ssize_t readline (socket_t socket, char *data, size_t size, timeout_t timeout=Timer::inf)
 Read a newline of text data from the socket and save in NULL terminated string.
static ssize_t recvfrom (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_storage *address=((void *) 0))
 Get data waiting in receive queue.
static ssize_t recvinet (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_internet *address=((void *) 0))
 Get internet data waiting in receive queue.
static int recvsize (socket_t socket, unsigned size)
 Set the receive size of a socket descriptor.
static void release (struct addrinfo *list)
 Release an address list directly.
static void release (socket_t socket)
 Release (close) a socket.
static void release (set_t mask)
 Release a heap allocated mask.
static ssize_t replyto (socket_t socket, void *buffer, size_t size, int flags, struct sockaddr_storage *address)
 Send reply on socket.
static unsigned segsize (socket_t socket, unsigned size=0)
 Set segment size and get MTU.
static int select (int max, set_t read, set_t write, set_t error)
 Select without timeout.
static int select (int max, set_t read, set_t write, set_t error, timeout_t timeout)
 Select with timeout.
static ssize_t sendinet (socket_t socket, void *buffer, size_t size, int flags, struct sockaddr_internet *address)
 Send to internet socket.
static int sendsize (socket_t socket, unsigned size)
 Set the send size of a socket descriptor.
static ssize_t sendto (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr *address=((void *) 0))
 Send data on socket.
static int sendwait (socket_t socket, unsigned size)
 Set the size to wait before sending.
static void set (socket_t socket, set_t mask)
 Set a socket entry in a mask.
static bool setccid (socket_t socket, uint8_t ccid)
 Set congestion control id.
static unsigned store (struct sockaddr_storage *storage, struct sockaddr *address)
 Store an address into an address object.
static unsigned store (struct sockaddr_internet *storage, struct sockaddr *address)
 Store an address into an internet address object.
static bool subnet (struct sockaddr *address1, struct sockaddr *address2)
 See if both addresses are in the same subnet.
static bool test (socket_t socket, set_t mask)
 Test a socket entry in a mask.
static int tos (socket_t socket, int type)
 Set type of service of socket descriptor.
static int ttl (socket_t socket, unsigned char time)
 Set the time to live for the socket descriptor.
static void v4mapping (bool enable)
 Set the default socket behavior for v6-v4 mapping.
static bool wait (socket_t socket, timeout_t timeout=0)
 Test for pending input data.
static size_t writeto (Socket &socket, char *buffer, size_t size, struct sockaddr *address)
 Send to socket object.

Static Public Attributes

static size_t masksize

Protected Attributes

int ioerr
timeout_t iowait
socket_t so

Friends

class address

Detailed Description

A generic socket base class.

This class can be used directly or as a base class for building network protocol stacks. This common base tries to handle UDP and TCP sockets, as well as support multicast, IPV4/IPV6 addressing, and additional addressing domains (such as Unix domain sockets).

Author:
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 301 of file socket.h.


Member Typedef Documentation

typedef void* ucommon::Socket::set_t

External definition of fd_set type.

This is used to generate select calls which may be wrapped through an internal function such as socks proxy or pth library.

Definition at line 331 of file socket.h.


Constructor & Destructor Documentation

ucommon::Socket::Socket ( Socket existing)

Create socket as duped handle of existing socket.

Parameters:
existingsocket to dup.
ucommon::Socket::Socket ( socket_t  socket)

Create socket from existing socket descriptor.

Parameters:
socketdescriptor to use.
ucommon::Socket::Socket ( struct addrinfo address)

Create and connect a socket to an address from an address list.

The type of socket created is based on the type we are connecting to.

Parameters:
addresslist to connect with.
ucommon::Socket::Socket ( int  family,
int  type,
int  protocol = 0 
)

Create an unbound socket of a specific type.

Parameters:
familyof our new socket.
type(stream, udp, etc) of our new socket.
protocolnumber of our new socket.'
ucommon::Socket::Socket ( char *  address,
char *  port,
int  family = AF_UNSPEC,
int  type = 0,
int  protocol = 0 
)

Create a bound socket.

If one wishes to listen for connections on a protocol, then ListenSocket should be used instead.

Parameters:
addressto bind or "*" for all.
portnumber of service to bind.
familyto bind as.
typeof socket to bind (stream, udp, etc).
protocolof socket to bind.

Member Function Documentation

static socket_t ucommon::Socket::acceptfrom ( socket_t  socket,
struct sockaddr_storage *  address = ((void *) 0) 
)
static

Accept a socket connection from a remote host.

Parameters:
socketdescriptor to accept from.
addressof socket accepting.
Returns:
new socket accepted.
static Socket ucommon::Socket::acceptfrom ( Socket socket,
struct sockaddr_storage *  address 
)
inlinestatic

Accept connection through socket.

Parameters:
socketobject to accept from.
addressaccepting from.
Returns:
socket accepted.

Definition at line 1363 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::bindto ( socket_t  socket,
char *  address,
char *  service,
int  protocol = 0 
)
static

Bind the socket descriptor to a known interface and service port.

Parameters:
socketdescriptor to bind.
addressto bind to or "*" for all.
serviceport to bind.
protocolto use or 0 if default.
Returns:
0 on success, -1 if error.
static int ucommon::Socket::bindto ( socket_t  socket,
struct sockaddr *  address 
)
static

Bind the socket descriptor to a known interface.

Parameters:
socketdescriptor to bind.
addressof interface to bind to.
Returns:
0 on success, -1 if error.
int ucommon::Socket::blocking ( bool  enable)
inline

Set socket blocking I/O mode.

Parameters:
enabletrue for blocking I/O.
Returns:
0 on success, -1 if error.

Definition at line 729 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::blocking ( socket_t  socket,
bool  enable 
)
static

Set socket blocking I/O mode of socket descriptor.

Parameters:
socketdescriptor.
enabletrue for blocking I/O.
Returns:
0 if success, -1 if error.
int ucommon::Socket::broadcast ( bool  enable)
inline

Set socket for unicast mode broadcasts.

Parameters:
enablebroadcasting if true.
Returns:
0 on success, -1 if error.

Definition at line 713 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::broadcast ( socket_t  socket,
bool  enable 
)
static

Set socket for unicast mode broadcasts on socket descriptor.

Parameters:
socketdescriptor.
enablebroadcasting if true.
Returns:
0 if success, -1 if error.
static void ucommon::Socket::cancel ( socket_t  socket)
static

Cancel pending i/o by shutting down the socket.

Parameters:
socketto shutdown.
static void ucommon::Socket::clear ( set_t  mask)
static

Clear a mask, setting all entries to zero.

Parameters:
maskto clear.
static void ucommon::Socket::clear ( socket_t  socket,
set_t  mask 
)
static

Clear a socket entry in a mask.

Parameters:
socketentry to clear.
maskto set entry in.
int ucommon::Socket::connectto ( struct addrinfo list)

Connect our socket to a remote host from an address list.

For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.

Parameters:
listof addresses to connect to.
Returns:
0 on success or error.
static int ucommon::Socket::connectto ( socket_t  socket,
struct addrinfo list 
)
static

Connect socket descriptor to a remote host from an address list.

For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used.

Parameters:
socketdescriptor.
listof addresses to connect to.
Returns:
0 on success, -1 on error.
static void ucommon::Socket::connectto ( Socket socket,
Socket::address address 
)
inlinestatic

Connect a socket.

Parameters:
socketobject to connect.
addresslist to connect to.

Definition at line 1347 of file socket.h.

Here is the call graph for this function:

static unsigned ucommon::Socket::copy ( struct sockaddr *  target,
struct sockaddr *  origin 
)
static

Copy a socket address.

Parameters:
targetaddress pointer to copy into.
originaddress pointer to copy from.
Returns:
number of bytes copied, 0 if invalid.
static socket_t ucommon::Socket::create ( int  family,
int  type,
int  protocol 
)
static

Create a socket object unbound.

Parameters:
familyof socket.
typeof socket.
protocolof socket.
Returns:
socket descriptor created or INVALID_SOCKET.
static socket_t ucommon::Socket::create ( struct addrinfo address,
int  type,
int  protocol 
)
static

Create a connected socket.

Parameters:
addresslist to connect to.
typeof socket to create.
protocolof socket.
Returns:
socket descriptor created or INVALID_SOCKET.
static socket_t ucommon::Socket::create ( char *  iface,
char *  service,
int  family = AF_UNSPEC,
int  type = 0,
int  protocol = 0 
)
static

Create a bound socket for a service.

Parameters:
ifaceto bind.
serviceport to bind.
familyto select or AF_UNSPEC
typeof socket to create.
protocolof socket to create.
Returns:
socket descriptor created or INVALID_SOCKET.
static socket_t ucommon::Socket::create ( Socket::address address)
static

Create a connected socket for a service.

Parameters:
addressof service for connect.
Returns:
socket descriptor.
int ucommon::Socket::disconnect ( void  )

Disconnect a connected socket.

Depending on the implementation, this might be done by connecting to AF_UNSPEC, connecting to a 0 address, or connecting to self.

Returns:
0 on success or error.
static int ucommon::Socket::disconnect ( socket_t  socket)
static

Disconnect a connected socket descriptor.

Parameters:
socketdescriptor.
Returns:
0 on success, -1 on error.
static void ucommon::Socket::disconnect ( Socket socket)
inlinestatic

Disconnect a connected socket.

Parameters:
socketobject to disconnect.

Definition at line 1354 of file socket.h.

Here is the call graph for this function:

int ucommon::Socket::drop ( struct addrinfo list)

Drop socket from multicast group.

Parameters:
listof groups to drop.
Returns:
0 on success, -1 on error.
static int ucommon::Socket::drop ( socket_t  socket,
struct addrinfo list 
)
static

Drop socket descriptor from multicast group.

Parameters:
socketdescriptor.
listof groups to drop.
Returns:
0 on success, -1 on error.
static bool ucommon::Socket::equal ( struct sockaddr *  address1,
struct sockaddr *  address2 
)
static

Compare socket addresses.

Test if the address and service matches or if there is no service, then just the host address values.

Parameters:
address1to compare.
address2to compare.
Returns:
true if same family and equal.
static bool ucommon::Socket::equalfrom ( struct sockaddr_storage *  address1,
struct sockaddr_storage *  address2 
)
inlinestatic

Compare socket addresses.

Test if the stored addresses received match. or if there is no service, then just the host address values.

Parameters:
address1to compare.
address2to compare.
Returns:
true if same family and equal.

Definition at line 1453 of file socket.h.

static bool ucommon::Socket::equalhost ( struct sockaddr *  address1,
struct sockaddr *  address2 
)
static

Compare socket host addresses.

Test if the host address matches or if there is no service, then just the host address values.

Parameters:
address1to compare.
address2to compare.
Returns:
true if same family and equal.
static bool ucommon::Socket::equalinet ( struct sockaddr_internet address1,
struct sockaddr_internet address2 
)
inlinestatic

Compare socket addresses.

Test if the internet addresses received match. or if there is no service, then just the host address values.

Parameters:
address1to compare.
address2to compare.
Returns:
true if same family and equal.

Definition at line 1463 of file socket.h.

static int ucommon::Socket::error ( socket_t  socket)
static

Get socket error code of socket descriptor.

Parameters:
socketdescriptor.
Returns:
socket error code.
static int ucommon::Socket::error ( void  )
static

Return error code of last socket operation,.

Returns:
errno style error code.
static void ucommon::Socket::family ( int  query)
static

Set default socket family preference for query options when the socket type is otherwise not specified.

Parameters:
queryfamily to select.
static socklen_t ucommon::Socket::getaddr ( socket_t  socket,
struct sockaddr_storage *  address,
char *  hostname,
char *  service 
)
static

Lookup a host name and service address based on the addressing family and socket type of a socket descriptor.

Store the result in a socket address structure.

Parameters:
socketdescriptor.
addressthat is resolved.
hostnameto resolve.
serviceport.
Returns:
socket address size.
static struct addrinfo* ucommon::Socket::getaddress ( char *  host,
char *  service,
int  type = SOCK_STREAM,
int  protocol = 0 
)
staticread

Get an address list directly.

This is used internally by some derived socket types when generic address lists would be invalid.

Parameters:
hostname in the form address or "address:port"
serviceid or port to use if not specified in host string.
typeof service to get.
protocolof service to get.
static char* ucommon::Socket::getaddress ( struct sockaddr *  address,
char *  buffer,
socklen_t  size 
)
static

Get the hostname of a socket address.

Parameters:
addressto lookup.
bufferto save hostname in.
sizeof hostname buffer.
Returns:
buffer if found or NULL if not.
int ucommon::Socket::getError ( void  )
inline

Get socket error code.

Returns:
socket error code.

Definition at line 752 of file socket.h.

static int ucommon::Socket::getfamily ( socket_t  socket)
static

Get the address family of the socket descriptor.

Returns:
address family.
static int ucommon::Socket::getfamily ( struct sockaddr_storage &  address)
inlinestatic

Get the address family of a socket address object.

Parameters:
addressto examine.
Returns:
address family.

Definition at line 1175 of file socket.h.

static int ucommon::Socket::getfamily ( struct sockaddr_internet address)
inlinestatic

Get the address family of an internet socket address object.

Parameters:
addressto examine.
Returns:
address family.

Definition at line 1183 of file socket.h.

static struct addrinfo* ucommon::Socket::gethint ( socket_t  socket,
struct addrinfo hint 
)
staticread

Create an address info lookup hint based on the family and type properties of a socket descriptor.

Parameters:
socketdescriptor.
hintbuffer.
Returns:
hint buffer.
static char* ucommon::Socket::gethostname ( struct sockaddr *  address,
char *  buffer,
size_t  size 
)
static

Lookup and return the host name associated with a socket address.

Parameters:
addressto lookup.
bufferto save hostname into.
sizeof buffer to save hostname into.
Returns:
buffer or NULL if lookup fails.
static int ucommon::Socket::getinterface ( struct sockaddr *  address,
struct sockaddr *  destination 
)
static

Get the socket address of the interface needed to reach a destination address.

Parameters:
addressof interface found.
destinationaddress.
Returns:
0 on success, -1 on error.
static socklen_t ucommon::Socket::getlen ( struct sockaddr *  address)
static

Get the size of a socket address.

Parameters:
addressof socket.
Returns:
size to use for this socket address object.
static int ucommon::Socket::getlocal ( socket_t  socket,
struct sockaddr_storage *  address 
)
static

Get local address to which the socket is bound.

This is defined here because we may re-define the backend linkage for the socks proxy in the future.

Parameters:
socketdescriptor to examine.
addressstorage for local address.
Returns:
0 on success, -1 on failure.
static set_t ucommon::Socket::getmask ( void  )
static

Get a mask from the heap.

Returns:
mask to use, all bits cleared.
unsigned ucommon::Socket::getPending ( void  )
inline

Get the number of bytes of data in the socket receive buffer.

Returns:
bytes pending.

Definition at line 705 of file socket.h.

static int ucommon::Socket::getremote ( socket_t  socket,
struct sockaddr_storage *  address 
)
static

Get remote address to which the socket is connected.

This is defined here because we may re-define the backend linkage for the socks proxy in the future.

Parameters:
socketdescriptor to examine.
addressstorage for remote address.
Returns:
0 on success, -1 on failure.
static short ucommon::Socket::getservice ( struct sockaddr *  address)
static

Get the service port of a socket.

Parameters:
addressof socket to examine.
Returns:
service port number.
static int ucommon::Socket::gettype ( socket_t  socket)
static

Get the type of a socket.

Parameters:
socketdescriptor.
Returns:
socket type.
int ucommon::Socket::gettype ( void  )
inline

Get the type of a socket.

Returns:
socket type.

Definition at line 815 of file socket.h.

Here is the call graph for this function:

static short ucommon::Socket::inetservice ( struct sockaddr_internet address)
inlinestatic

Get the service port of an inet socket.

Parameters:
addressof internet socket to examine.
Returns:
service port number.

Definition at line 1505 of file socket.h.

static void ucommon::Socket::init ( char *  program)
static

Initialize with program name.

Used by socks, for example.

Parameters:
programname.
bool ucommon::Socket::isConnected ( void  )

Test if socket is connected.

Returns:
true if connected.
static bool ucommon::Socket::isNull ( char *  string)
static

Simple function to validate that a given IP address string is a "zero" address.

Such address strings are used for example in SIP to indicate "hold" by re-inviting peers to a null address. Supports IPV4 and IPV6 addresses.

Parameters:
stringaddress to check.
Returns:
true if zero/null address.
static bool ucommon::Socket::isNumeric ( char *  string)
static

Simple function to validate that a given IP address string is a numeric address.

This can be used to verify an address is not a "host" name. Supports IPV4 and IPV6 address strings.

Parameters:
stringaddress to check.
Returns:
true if zero/null address.
bool ucommon::Socket::isPending ( unsigned  value)

See the number of bytes in the receive queue.

Parameters:
valueto test for.
Returns:
true if at least that many bytes waiting in receive queue.
int ucommon::Socket::join ( struct addrinfo list)

Join socket to multicast group.

Parameters:
listof groups to join.
Returns:
0 on success, -1 on error.
static int ucommon::Socket::join ( socket_t  socket,
struct addrinfo list 
)
static

Join socket descriptor to multicast group.

Parameters:
socketdescriptor.
listof groups to join.
Returns:
0 on success, -1 on error.
int ucommon::Socket::keepalive ( bool  enable)
inline

Set socket for keepalive packets.

Parameters:
enablekeep-alive if true.
Returns:
0 on success, -1 if error.

Definition at line 721 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::keepalive ( socket_t  socket,
bool  enable 
)
static

Set socket for keepalive packets for socket descriptor.

Parameters:
socketdescriptor.
enablekeep-alive if true.
Returns:
0 if success, -1 if error.
static unsigned ucommon::Socket::keyhost ( struct sockaddr *  address,
unsigned  size 
)
static

Convert a socket host address into a hash map index.

Parameters:
addressto convert.
sizeof map index.
Returns:
key index path.
static unsigned ucommon::Socket::keyindex ( struct sockaddr *  address,
unsigned  size 
)
static

Convert a socket address and service into a hash map index.

Parameters:
addressto convert.
sizeof map index.
Returns:
key index path.
static int ucommon::Socket::listento ( socket_t  socket,
struct sockaddr *  address,
int  backlog = 5 
)
static

Bind the socket descriptor to a known interface listen on service port.

Parameters:
socketdescriptor to bind.
addressof interface to bind to.
backlogfor service.
Returns:
0 on success, -1 if error.
int ucommon::Socket::loopback ( bool  enable)
inline

Set loopback to read multicast packets we broadcast.

Parameters:
enabletrue to loopback, false to ignore.
Returns:
0 on success, -1 if error.

Definition at line 745 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::loopback ( socket_t  socket,
bool  enable 
)
static

Set loopback to read multicast packets socket descriptor broadcasts.

Parameters:
socketdescriptor.
enabletrue to loopback, false to ignore.
Returns:
0 if success, -1 if error.
int ucommon::Socket::multicast ( unsigned  ttl = 1)
inline

Set multicast mode and multicast broadcast range.

Parameters:
ttlto set for multicast socket or 0 to disable multicast.
Returns:
0 on success, -1 if error.

Definition at line 737 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::multicast ( socket_t  socket,
unsigned  ttl = 1 
)
static

Set multicast mode and multicast broadcast range for socket descriptor.

Parameters:
socketdescriptor.
ttlto set for multicast socket or 0 to disable multicast.
Returns:
0 if success, -1 if error.
int ucommon::Socket::nodelay ( void  )
inline

Set nodelay option for tcp socket.

Returns:
0 if successful, -1 on error.

Definition at line 681 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::nodelay ( socket_t  socket)
static

Set tcp nodelay option on socket descriptor.

Parameters:
socketdescriptor.
Returns:
0 if success, -1 if error.
ucommon::Socket::operator bool ( )

Test if socket is valid.

Returns:
true if valid socket.
ucommon::Socket::operator socket_t ( )
inline

Get the socket descriptor by casting.

Returns:
socket descriptor of object.

Reimplemented in ucommon::ListenSocket.

Definition at line 1011 of file socket.h.

bool ucommon::Socket::operator! ( )

Test if socket is invalid.

Returns:
true if socket is invalid.
socket_t ucommon::Socket::operator* ( )
inline

Get the socket descriptor by pointer reference.

Returns:
socket descriptor of object.

Reimplemented in ucommon::ListenSocket.

Definition at line 1018 of file socket.h.

Socket& ucommon::Socket::operator= ( socket_t  socket)

Assign socket from a socket descriptor.

Release existing socket if one present.

Parameters:
socketdescriptor to assign to object.
size_t ucommon::Socket::peek ( void *  data,
size_t  number 
)

Peek at data waiting in the socket receive buffer.

Parameters:
datapointer to save data in.
numberof bytes to peek.
Returns:
number of bytes actually read, or 0 if no data waiting.
static unsigned ucommon::Socket::pending ( socket_t  socket)
static

Get the number of bytes pending in the receive buffer of a socket descriptor.

Parameters:
socketdescriptor.
Returns:
number of pending bytes.
size_t ucommon::Socket::printf ( char *  format,
  ... 
)

Print formatted string to socket.

Parameters:
formatstring.
Returns:
number of bytes sent.
static ssize_t ucommon::Socket::printf ( socket_t  socket,
char *  format,
  ... 
)
static

Print formatted string to socket.

Parameters:
socketto write to.
formatstring.
Returns:
number of bytes sent, -1 if error.
int ucommon::Socket::priority ( int  scheduling)
inline

Set packet priority, 0 to 6 unless privileged.

Should be set before type-of-service.

Parameters:
schedulingpriority for packet scheduling.
Returns:
0 on success, -1 on error.

Definition at line 851 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::priority ( socket_t  socket,
int  scheduling 
)
static

Set packet priority of socket descriptor.

Parameters:
socketdescriptor.
schedulingpriority for packet scheduling.
Returns:
0 on success, -1 on error.
size_t ucommon::Socket::readfrom ( void *  data,
size_t  number,
struct sockaddr_storage *  address = ((void *) 0) 
)

Read data from the socket receive buffer.

This will be used in abi 4.

Parameters:
datapointer to save data in.
numberof bytes to read.
addressof peer data was received from.
Returns:
number of bytes actually read, 0 if none, -1 if error.
static size_t ucommon::Socket::readfrom ( Socket socket,
char *  buffer,
size_t  size,
struct sockaddr_storage *  address 
)
inlinestatic

receive from socket object.

Parameters:
socketobject to recv from.
bufferto recv.
sizeof buffer to recv.
addressreceiving from or NULL if connected.
Returns:
number of bytes received, -1 if error.

Definition at line 1339 of file socket.h.

Here is the call graph for this function:

size_t ucommon::Socket::readline ( char *  data,
size_t  size 
)

Read a newline of text data from the socket and save in NULL terminated string.

This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.

Parameters:
datato save input line.
sizeof input line buffer.
Returns:
number of bytes read, 0 if none, err() has error.
size_t ucommon::Socket::readline ( string buffer)

Read a string of input from the socket and strip trailing newline.

This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned.

Parameters:
bufferto save input line.
Returns:
number of bytes read, 0 if none, err() has error.
static ssize_t ucommon::Socket::readline ( socket_t  socket,
char *  data,
size_t  size,
timeout_t  timeout = Timer::inf 
)
static

Read a newline of text data from the socket and save in NULL terminated string.

This uses an optimized I/O method that takes advantage of socket peeking. As such, it has to be rewritten to be used in a ssl layer socket.

Parameters:
socketto read from.
datato save input line.
sizeof input line buffer.
timeoutto wait for a complete input line.
Returns:
number of bytes read, 0 if none, -1 if error.
static ssize_t ucommon::Socket::recvfrom ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags = 0,
struct sockaddr_storage *  address = ((void *) 0) 
)
static

Get data waiting in receive queue.

Parameters:
socketto get from.
bufferto save.
sizeof data buffer to request.
flagsfor i/o operation (MSG_OOB, MSG_PEEK, etc).
addressof source.
Returns:
number of bytes received, -1 if error.
static ssize_t ucommon::Socket::recvinet ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags = 0,
struct sockaddr_internet address = ((void *) 0) 
)
static

Get internet data waiting in receive queue.

Parameters:
socketto get from.
bufferto save.
sizeof data buffer to request.
flagsfor i/o operation (MSG_OOB, MSG_PEEK, etc).
addressof source.
Returns:
number of bytes received, -1 if error.
int ucommon::Socket::recvsize ( unsigned  size)
inline

Set the size of the socket receive buffer.

Parameters:
sizeof recv buffer to set.
Returns:
0 on success, -1 on error.

Definition at line 785 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::recvsize ( socket_t  socket,
unsigned  size 
)
static

Set the receive size of a socket descriptor.

Parameters:
socketdescriptor.
sizeof receive buffer to set.
Returns:
0 on success, -1 on error.
static void ucommon::Socket::release ( struct addrinfo list)
static

Release an address list directly.

This is used internally by some derived socket types which do not use generic address lists.

Parameters:
listof addresses.
static void ucommon::Socket::release ( socket_t  socket)
static

Release (close) a socket.

Parameters:
socketto close.
static void ucommon::Socket::release ( set_t  mask)
static

Release a heap allocated mask.

Parameters:
maskto release.
static ssize_t ucommon::Socket::replyto ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags,
struct sockaddr_storage *  address 
)
inlinestatic

Send reply on socket.

Used to reply to a recvfrom message.

Parameters:
socketto send to.
bufferto send.
sizeof data buffer to send.
flagsfor i/o operation (MSG_OOB, MSG_PEEK, etc).
addressto reply to.
Returns:
number of bytes sent, -1 if error.

Definition at line 1217 of file socket.h.

static unsigned ucommon::Socket::segsize ( socket_t  socket,
unsigned  size = 0 
)
static

Set segment size and get MTU.

Parameters:
socketto modify.
sizeof segment or zero to not set.
Returns:
mtu size of socket.
unsigned ucommon::Socket::segsize ( unsigned  size)
inline

Set segment size and get mtu of a socket.

Parameters:
sizeof segment or 0 to leave unchanged.
Returns:
mtu size.

Definition at line 823 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::select ( int  max,
set_t  read,
set_t  write,
set_t  error 
)
static

Select without timeout.

Parameters:
maxsocket id + 1.
readmask of socket id's.
writemask of socket id's.
errormask of socket id's.
static int ucommon::Socket::select ( int  max,
set_t  read,
set_t  write,
set_t  error,
timeout_t  timeout 
)
static

Select with timeout.

Parameters:
maxsocket id + 1.
readmask of socket id's.
writemask of socket id's.
errormask of socket id's.
timeoutin milliseconds to wait for select activity.
static ssize_t ucommon::Socket::sendinet ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags,
struct sockaddr_internet address 
)
inlinestatic

Send to internet socket.

Parameters:
socketto send to.
bufferto send.
sizeof data buffer to send.
flagsfor i/o operation (MSG_OOB, MSG_PEEK, etc).
addressto send to.
Returns:
number of bytes sent, -1 if error.

Definition at line 1229 of file socket.h.

int ucommon::Socket::sendsize ( unsigned  size)
inline

Set the size of the socket send buffer.

Parameters:
sizeof send buffer to set.
Returns:
0 on success, -1 on error.

Definition at line 768 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::sendsize ( socket_t  socket,
unsigned  size 
)
static

Set the send size of a socket descriptor.

Parameters:
socketdescriptor.
sizeof send buffer to set.
Returns:
0 on success, -1 on error.
static ssize_t ucommon::Socket::sendto ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags = 0,
struct sockaddr *  address = ((void *) 0) 
)
static

Send data on socket.

Parameters:
socketto send to.
bufferto send.
sizeof data buffer to send.
flagsfor i/o operation (MSG_OOB, MSG_PEEK, etc).
addressof destination, NULL if connected.
Returns:
number of bytes sent, -1 if error.
int ucommon::Socket::sendwait ( unsigned  size)
inline

Set the size to wait before sending.

Parameters:
sizeof send wait buffer to set.
Returns:
0 on success, -1 on error.

Definition at line 776 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::sendwait ( socket_t  socket,
unsigned  size 
)
static

Set the size to wait before sending.

Parameters:
socketdescriptor.
sizeof send wait buffer to set.
Returns:
0 on success, -1 on error.
static void ucommon::Socket::set ( socket_t  socket,
set_t  mask 
)
static

Set a socket entry in a mask.

Parameters:
socketentry to set.
maskto set entry in.
static bool ucommon::Socket::setccid ( socket_t  socket,
uint8_t  ccid 
)
static

Set congestion control id.

Parameters:
socketto modify.
ccidvalue to set.
Returns:
true if success, false if not dccp or not supported ccid used.
bool ucommon::Socket::setccid ( uint8_t  ccid)
inline

Set ccid of dccp socket.

Parameters:
ccidto set.
Returns:
true if success, false if not dccp or not supported ccid used.

Definition at line 831 of file socket.h.

Here is the call graph for this function:

static unsigned ucommon::Socket::store ( struct sockaddr_storage *  storage,
struct sockaddr *  address 
)
inlinestatic

Store an address into an address object.

Parameters:
storagefor address.
addressto store.
Returns:
number of bytes stored.

Definition at line 1426 of file socket.h.

Here is the call graph for this function:

static unsigned ucommon::Socket::store ( struct sockaddr_internet storage,
struct sockaddr *  address 
)
static

Store an address into an internet address object.

Parameters:
storagefor address.
addressto store.
Returns:
number of bytes stored.
static bool ucommon::Socket::subnet ( struct sockaddr *  address1,
struct sockaddr *  address2 
)
static

See if both addresses are in the same subnet.

This is only relevant to IPV4 and class domain routing.

Parameters:
address1to test.
address2to test.
Returns:
true if in same subnet.
static bool ucommon::Socket::test ( socket_t  socket,
set_t  mask 
)
static

Test a socket entry in a mask.

Parameters:
socketentry to test.
maskto set entry in.
Returns:
true if entry set.
int ucommon::Socket::tos ( int  type)
inline

Set the type of service field of outgoing packets.

Some useful values include IPTOS_LOWDELAY to minimize delay for interactive traffic, IPTOS_THROUGHPUT to optimize throughput, OPTOS_RELIABILITY to optimize for reliability, and IPTOS_MINCOST for low speed use.

Parameters:
typeof service value.
Returns:
0 on success or -1 on error.

Definition at line 842 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::tos ( socket_t  socket,
int  type 
)
static

Set type of service of socket descriptor.

Parameters:
socketdescriptor.
typeof service.
Returns:
0 on success, -1 on error.
int ucommon::Socket::ttl ( unsigned char  time)
inline

Set the time to live before packets expire.

Parameters:
timeto live to set.
Returns:
0 on success, -1 on error.

Definition at line 760 of file socket.h.

Here is the call graph for this function:

static int ucommon::Socket::ttl ( socket_t  socket,
unsigned char  time 
)
static

Set the time to live for the socket descriptor.

Parameters:
socketdescriptor.
timeto live to set.
Returns:
0 on success, -1 on error.
static void ucommon::Socket::v4mapping ( bool  enable)
static

Set the default socket behavior for v6-v4 mapping.

This also effects v6 address lookup as to whether v4 remapped addresses can be used if no v6 address is found.

Parameters:
enabletrue to set mapping. This is default.
static bool ucommon::Socket::wait ( socket_t  socket,
timeout_t  timeout = 0 
)
static

Test for pending input data.

This function can wait up to a specified timeout for data to appear.

Parameters:
socketto test.
timeoutor 0 if none.
Returns:
true if input data waiting.
int ucommon::Socket::wait ( timeout_t  timeout = Timer::inf)

Socket i/o timer setting.

Parameters:
timeoutto wait, inf for blocking, 0 pure non-blocking.
Returns:
0 on success or error code.
bool ucommon::Socket::waitPending ( timeout_t  timeout = 0)

Test for pending input data.

This function can wait up to a specified timeout for data to appear.

Parameters:
timeoutor 0 if none.
Returns:
true if input data waiting.
bool ucommon::Socket::waitSending ( timeout_t  timeout = 0)

Test for output data sent.

This function can wait up to a specified timeout for data to appear sent.

Parameters:
timeoutor 0 if none.
Returns:
false if cannot send more output/out of buffer space.
size_t ucommon::Socket::writes ( char *  string)

Write a null terminated string to the socket.

This exists because we messed up consistency with the original puts() method. In the future there will be a single puts() that has a NULL default.

Parameters:
stringto write.
Returns:
number of bytes sent, 0 if none, -1 if error.
size_t ucommon::Socket::writeto ( void *  data,
size_t  number,
struct sockaddr *  address = ((void *) 0) 
)

Write data to the socket send buffer.

This will be used in abi 4.

Parameters:
datapointer to write data from.
numberof bytes to write.
addressof peer to send data to if not connected.
Returns:
number of bytes actually sent, 0 if none, -1 if error.
static size_t ucommon::Socket::writeto ( Socket socket,
char *  buffer,
size_t  size,
struct sockaddr *  address 
)
inlinestatic

Send to socket object.

Parameters:
socketobject to send thru.
bufferto send.
sizeof buffer to send.
addressto send to or NULL if connected.
Returns:
number of bytes send, -1 if error.

Definition at line 1328 of file socket.h.

Here is the call graph for this function:


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