ucommon  7.0.0
About: GNU uCommon C++ is a portable and optimized class framework for writing C++ applications that need to use threads and support concurrent synchronization, and that use sockets, XML parsing, object serialization, thread-optimized string and data structure classes, etc..
  Fossies Dox: ucommon-7.0.0.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

ucommon::Socket Class Reference

#include <socket.h>

Inheritance diagram for ucommon::Socket:
[legend]

Classes

class  address
 

Public Types

typedef struct hostaddr_internet host_t
 
typedef cidr cidr_t
 

Public Member Functions

 Socket ()
 
 Socket (const Socket &existing)
 
 Socket (socket_t socket)
 
 Socket (const struct addrinfo *address)
 
 Socket (int family, int type, int protocol=0)
 
 Socket (const char *address, const char *port, int family=AF_UNSPEC, int type=0, int protocol=0)
 
virtual ~Socket ()
 
void cancel (void)
 
void release (void)
 
int err (void) const
 
bool is_pending (unsigned value)
 
bool connected (void) const
 
bool wait (timeout_t timeout=0) const
 
int nodelay (void) const
 
bool waitSending (timeout_t timeout=0) const
 
unsigned pending (void) const
 
int broadcast (bool enable)
 
int keepalive (bool enable)
 
int blocking (bool enable)
 
int multicast (unsigned ttl=1)
 
int loopback (bool enable)
 
int getError (void) const
 
int ttl (uint8_t time)
 
int sendsize (unsigned size)
 
int sendwait (unsigned size)
 
int recvsize (unsigned size)
 
int type (void) const
 
unsigned segsize (unsigned size)
 
bool ccid (uint8_t id)
 
int tos (int type)
 
int priority (int scheduling)
 
void shutdown (void)
 
int connectto (struct addrinfo *list)
 
int disconnect (void)
 
int join (const struct addrinfo *list, const int ifindex=0)
 
int drop (const struct addrinfo *list, const int ifindex=0)
 
int wait (timeout_t timeout=Timer::inf)
 
size_t peek (void *data, size_t number) const
 
size_t readfrom (void *data, size_t number, struct sockaddr_storage *address=NULL)
 
size_t writeto (const void *data, size_t number, const struct sockaddr *address=NULL)
 
size_t readline (char *data, size_t size)
 
size_t printf (const char *format,...) __PRINTF(2
 
size_t size_t readline (String &buffer)
 
stringref_t readline (size_t maxsize)
 
static ssize_t size_t writes (const char *string)
 
 operator bool () const
 
bool operator! () const
 
Socketoperator= (socket_t socket)
 
 operator socket_t () const
 
socket_t operator* () const
 

Static Public Member Functions

static struct addrinfoquery (const char *host, const char *service, int type=SOCK_STREAM, int protocol=0)
 
static void release (struct addrinfo *list)
 
static void cancel (socket_t socket)
 
static bool wait (socket_t socket, timeout_t timeout=0)
 
static int type (const socket_t socket)
 
static unsigned segsize (socket_t socket, unsigned size=0)
 
static bool ccid (socket_t socket, uint8_t id)
 
static ssize_t readline (socket_t socket, char *data, size_t size, timeout_t timeout=Timer::inf)
 
static ssize_t printf (socket_t socket, const char *format,...) __PRINTF(2
 
static unsigned pending (socket_t socket)
 
static int sendsize (socket_t socket, unsigned size)
 
static int sendwait (socket_t socket, unsigned size)
 
static int recvsize (socket_t socket, unsigned size)
 
static int connectto (socket_t socket, struct addrinfo *list)
 
static int disconnect (socket_t socket)
 
static int drop (socket_t socket, const struct addrinfo *list, const int ifindex=0)
 
static int join (socket_t socket, const struct addrinfo *list, const int ifindex=0)
 
static int error (const socket_t socket)
 
static int multicast (socket_t socket, unsigned ttl=1)
 
static int loopback (socket_t socket, bool enable)
 
static int blocking (socket_t socket, bool enable)
 
static int keepalive (socket_t socket, bool enable)
 
static int broadcast (socket_t socket, bool enable)
 
static int nodelay (socket_t socket)
 
static int priority (socket_t socket, int scheduling)
 
static int tos (socket_t socket, int type)
 
static int ttl (socket_t socket, uint8_t time)
 
static int family (socket_t socket)
 
static int family (const struct sockaddr_storage &address)
 
static int family (const struct sockaddr_internet &address)
 
static ssize_t recvfrom (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_storage *address=NULL)
 
static ssize_t sendto (socket_t socket, const void *buffer, size_t size, int flags=0, const struct sockaddr *address=NULL)
 
static ssize_t replyto (socket_t socket, const void *buffer, size_t size, int flags, const struct sockaddr_storage *address)
 
static int bindto (socket_t socket, const char *address, const char *service, int protocol=0)
 
static int listento (socket_t socket, const struct sockaddr *address, int backlog=5)
 
static int bindto (socket_t socket, const struct sockaddr *address)
 
static socket_t acceptfrom (socket_t socket, struct sockaddr_storage *address=NULL)
 
static socket_t create (int family, int type, int protocol)
 
static socket_t create (const struct addrinfo *address, int type, int protocol)
 
static socket_t create (const char *iface, const char *service, int family=AF_UNSPEC, int type=0, int protocol=0)
 
static socket_t create (const Socket::address &address)
 
static void release (socket_t socket)
 
static char * hostname (const struct sockaddr *address, char *buffer, size_t size)
 
static struct addrinfohinting (socket_t socket, struct addrinfo *hint)
 
static socklen_t query (socket_t socket, struct sockaddr_storage *address, const char *hostname, const char *service)
 
static socklen_t len (const struct sockaddr *address)
 
static bool equal (const struct sockaddr *address1, const struct sockaddr *address2)
 
static unsigned copy (struct sockaddr *target, const struct sockaddr *origin)
 
static unsigned store (struct sockaddr_storage *storage, const struct sockaddr *address)
 
static unsigned store (struct sockaddr_internet *storage, const struct sockaddr *address)
 
static bool eq_host (const struct sockaddr *address1, const struct sockaddr *address2)
 
static bool eq_from (const struct sockaddr_storage *address1, const struct sockaddr_storage *address2)
 
static bool eq_inet (const struct sockaddr_internet *address1, const struct sockaddr_internet *address2)
 
static bool eq_subnet (const struct sockaddr *address1, const struct sockaddr *address2)
 
static int via (struct sockaddr *address, const struct sockaddr *target, socklen_t size=0)
 
static char * query (const struct sockaddr *address, char *buffer, socklen_t size)
 
static in_port_t port (const struct sockaddr *address)
 
static in_port_t port (const struct sockaddr_internet *address)
 
static unsigned keyindex (const struct sockaddr *address, unsigned size)
 
static unsigned keyhost (const struct sockaddr *address, unsigned size)
 
static void init (void)
 
static void query (int family)
 
static void v4mapping (bool enable)
 
static int error (void)
 
static bool is_null (const char *string)
 
static bool is_numeric (const char *string)
 
static int local (socket_t socket, struct sockaddr_storage *address)
 
static int remote (socket_t socket, struct sockaddr_storage *address)
 

Protected Attributes

socket_t so
 
int ioerr
 
timeout_t iowait
 

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 327 of file socket.h.

Member Typedef Documentation

◆ cidr_t

Definition at line 337 of file socket.h.

◆ host_t

Definition at line 336 of file socket.h.

Constructor & Destructor Documentation

◆ Socket() [1/6]

ucommon::Socket::Socket ( )

Create a socket object for use.

Definition at line 1588 of file socket.cpp.

References ucommon::Timer::inf, INVALID_SOCKET, ioerr, iowait, and so.

◆ Socket() [2/6]

ucommon::Socket::Socket ( const Socket existing)

Create socket as duped handle of existing socket.

Parameters
existingsocket to dup.

Definition at line 1570 of file socket.cpp.

References ucommon::dup(), init(), INVALID_SOCKET, ioerr, iowait, and so.

◆ Socket() [3/6]

ucommon::Socket::Socket ( socket_t  socket)

Create socket from existing socket descriptor.

Parameters
socketdescriptor to use.

Definition at line 1595 of file socket.cpp.

References ucommon::Timer::inf, ioerr, iowait, and so.

◆ Socket() [4/6]

ucommon::Socket::Socket ( const 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.

Definition at line 1602 of file socket.cpp.

References ucommon::addr(), ucommon::Timer::inf, init(), INVALID_SOCKET, ioerr, iowait, so, and ucommon::socket_mapping().

◆ Socket() [5/6]

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.'

Definition at line 1623 of file socket.cpp.

References create(), family(), ucommon::Timer::inf, ioerr, iowait, so, and type().

◆ Socket() [6/6]

ucommon::Socket::Socket ( const char *  address,
const 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.

Definition at line 1630 of file socket.cpp.

References create(), family(), ucommon::Timer::inf, init(), ioerr, iowait, port(), ucommon::setfamily(), so, and type().

◆ ~Socket()

ucommon::Socket::~Socket ( )
virtual

Shutdown, close, and destroy socket.

Reimplemented in ost::Socket.

Definition at line 1726 of file socket.cpp.

References release().

Member Function Documentation

◆ acceptfrom()

socket_t ucommon::Socket::acceptfrom ( socket_t  socket,
struct sockaddr_storage address = NULL 
)
static

Accept a socket connection from a remote host.

Parameters
socketdescriptor to accept from.
addressof socket accepting.
Returns
new socket accepted.

Definition at line 2656 of file socket.cpp.

References ucommon::addr(), len(), and so.

◆ bindto() [1/2]

int ucommon::Socket::bindto ( socket_t  socket,
const char *  address,
const 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.

Definition at line 2997 of file socket.cpp.

References addrinfo::ai_addr, addrinfo::ai_addrlen, addrinfo::ai_family, addrinfo::ai_flags, AI_NUMERICHOST, AI_PASSIVE, addrinfo::ai_protocol, caddr_t, error(), ucommon::freeaddrinfo(), ucommon::getaddrinfo(), hinting(), INVALID_SOCKET, len(), so, and ucommon::v6only.

◆ bindto() [2/2]

int ucommon::Socket::bindto ( socket_t  socket,
const 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.

Definition at line 2981 of file socket.cpp.

References error(), len(), and so.

◆ blocking() [1/2]

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 1000 of file socket.h.

Referenced by wait().

◆ blocking() [2/2]

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.

Definition at line 2308 of file socket.cpp.

References err(), error(), INVALID_SOCKET, O_NONBLOCK, and so.

◆ broadcast() [1/2]

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 982 of file socket.h.

◆ broadcast() [2/2]

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.

Definition at line 2164 of file socket.cpp.

References err(), error(), INVALID_SOCKET, and so.

◆ cancel() [1/2]

void ucommon::Socket::cancel ( socket_t  socket)
static

Cancel pending i/o by shutting down the socket.

Parameters
socketto shutdown.

Definition at line 1748 of file socket.cpp.

References INVALID_SOCKET, shutdown(), and so.

◆ cancel() [2/2]

void ucommon::Socket::cancel ( void  )

Cancel pending i/o by shutting down the socket.

Definition at line 1742 of file socket.cpp.

References INVALID_SOCKET, shutdown(), and so.

◆ ccid() [1/2]

bool ucommon::Socket::ccid ( socket_t  socket,
uint8_t  id 
)
static

Set congestion control id.

Parameters
socketto modify.
ccidvalue to set.
Returns
true if success, false if not dccp or not supported ccid used.

Definition at line 2857 of file socket.cpp.

References DCCP_SOCKOPT_AVAILABLE_CCIDS, DCCP_SOCKOPT_CCID, len(), so, and SOL_DCCP.

Referenced by ost::DCCPSocket::getRxCCID(), ost::DCCPSocket::getTxCCID(), and ost::DCCPSocket::setCCID().

◆ ccid() [2/2]

bool ucommon::Socket::ccid ( uint8_t  id)
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 1111 of file socket.h.

◆ connected()

bool ucommon::Socket::connected ( void  ) const

Test if socket is connected.

Returns
true if connected.

Definition at line 2607 of file socket.cpp.

References INVALID_SOCKET, MSG_DONTWAIT, so, and wait().

Referenced by ost::DCCPSocket::connect(), and ost::TCPStream::connect().

◆ connectto() [1/2]

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.

Definition at line 2513 of file socket.cpp.

References addrinfo::ai_addr, addrinfo::ai_addrlen, addrinfo::ai_family, addrinfo::ai_next, error(), family(), INVALID_SOCKET, and so.

◆ connectto() [2/2]

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.

Definition at line 2503 of file socket.cpp.

References ioerr, and so.

Referenced by create(), and ucommon::tcpstream::open().

◆ copy()

unsigned ucommon::Socket::copy ( struct sockaddr *  target,
const 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.

Definition at line 3296 of file socket.cpp.

References len().

Referenced by ucommon::Socket::address::address(), ucommon::Socket::address::operator=(), store(), and ucommon::Socket::address::withPort().

◆ create() [1/4]

socket_t ucommon::Socket::create ( const char *  iface,
const 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.

Definition at line 1662 of file socket.cpp.

References addrinfo::ai_addr, addrinfo::ai_addrlen, addrinfo::ai_family, addrinfo::ai_flags, AI_NUMERICHOST, AI_PASSIVE, addrinfo::ai_protocol, addrinfo::ai_socktype, caddr_t, create(), family(), ucommon::freeaddrinfo(), ucommon::getaddrinfo(), init(), INVALID_SOCKET, len(), port(), release(), ucommon::setfamily(), so, type(), and ucommon::v6only.

◆ create() [2/4]

socket_t ucommon::Socket::create ( const Socket::address address)
static

Create a connected socket for a service.

Parameters
addressof service for connect.
Returns
socket descriptor.

Definition at line 1644 of file socket.cpp.

References address, addrinfo::ai_family, addrinfo::ai_protocol, addrinfo::ai_socktype, connectto(), create(), INVALID_SOCKET, release(), and so.

◆ create() [3/4]

socket_t ucommon::Socket::create ( const 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.

Definition at line 2462 of file socket.cpp.

References AF_UNSPEC, addrinfo::ai_addr, addrinfo::ai_addrlen, addrinfo::ai_family, addrinfo::ai_next, addrinfo::ai_protocol, addrinfo::ai_socktype, create(), INVALID_SOCKET, release(), and so.

◆ create() [4/4]

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.

Definition at line 1731 of file socket.cpp.

References family(), init(), so, ucommon::socket_mapping(), and type().

Referenced by create(), ucommon::ListenSocket::create(), Socket(), and ucommon::tcpstream::tcpstream().

◆ disconnect() [1/2]

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

Disconnect a connected socket descriptor.

Parameters
socketdescriptor.
Returns
0 on success, -1 on error.

Definition at line 2333 of file socket.cpp.

References ucommon::addr(), AF_UNSPEC, err(), error(), family(), INVALID_SOCKET, len(), and so.

◆ disconnect() [2/2]

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.

Definition at line 2508 of file socket.cpp.

References ioerr, and so.

Referenced by ucommon::tcpstream::close(), and ucommon::tcpstream::reset().

◆ drop() [1/2]

int ucommon::Socket::drop ( const struct addrinfo list,
const int  ifindex = 0 
)

Drop socket from multicast group.

Parameters
listof groups to drop.
Returns
0 on success, -1 on error.

Definition at line 2284 of file socket.cpp.

References ucommon::addr(), ioerr, and so.

Referenced by ost::Socket::drop().

◆ drop() [2/2]

int ucommon::Socket::drop ( socket_t  socket,
const struct addrinfo list,
const int  ifindex = 0 
)
static

Drop socket descriptor from multicast group.

Parameters
socketdescriptor.
listof groups to drop.
Returns
0 on success, -1 on error.

Definition at line 2412 of file socket.cpp.

References ucommon::addr(), addrinfo::ai_addr, addrinfo::ai_family, addrinfo::ai_next, error(), family(), INVALID_SOCKET, sockaddr_internet::ipv4, len(), and so.

◆ eq_from()

static bool ucommon::Socket::eq_from ( const struct sockaddr_storage address1,
const 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 1674 of file socket.h.

◆ eq_host()

bool ucommon::Socket::eq_host ( const struct sockaddr *  address1,
const 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.

Definition at line 3309 of file socket.cpp.

References len().

Referenced by ucommon::eq_host().

◆ eq_inet()

static bool ucommon::Socket::eq_inet ( const struct sockaddr_internet address1,
const 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 1685 of file socket.h.

◆ eq_subnet()

bool ucommon::Socket::eq_subnet ( const struct sockaddr *  address1,
const 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.

Definition at line 3244 of file socket.cpp.

Referenced by ucommon::eq_subnet().

◆ equal()

bool ucommon::Socket::equal ( const struct sockaddr *  address1,
const 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.

Definition at line 3340 of file socket.cpp.

References len().

Referenced by ucommon::eq(), ucommon::Socket::address::find(), ucommon::Socket::address::insert(), ucommon::mapped_keyequal< struct sockaddr >(), ucommon::Type::SockAddress::operator!=(), ucommon::Type::InetAddress::operator!=(), ucommon::Socket::address::operator==(), ucommon::Type::SockAddress::operator==(), ucommon::Type::InetAddress::operator==(), and ucommon::Socket::address::remove().

◆ err()

int ucommon::Socket::err ( void  ) const
inline

◆ error() [1/2]

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

Get socket error code of socket descriptor.

Parameters
socketdescriptor.
Returns
socket error code.

Definition at line 2548 of file socket.cpp.

References caddr_t, INVALID_SOCKET, and so.

◆ error() [2/2]

◆ family() [1/3]

static int ucommon::Socket::family ( const struct sockaddr_internet address)
inlinestatic

Get the address family of an internet socket address object.

Parameters
addressto examine.
Returns
address family.

Definition at line 1472 of file socket.h.

References ucommon::Socket::address::address().

◆ family() [2/3]

static int ucommon::Socket::family ( const struct sockaddr_storage address)
inlinestatic

Get the address family of a socket address object.

Parameters
addressto examine.
Returns
address family.

Definition at line 1463 of file socket.h.

◆ family() [3/3]

◆ getError()

int ucommon::Socket::getError ( void  ) const
inline

Get socket error code.

Returns
socket error code.

Definition at line 1026 of file socket.h.

References error.

◆ hinting()

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

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

Parameters
socketdescriptor.
hintbuffer.
Returns
hint buffer.

Definition at line 2827 of file socket.cpp.

References addrinfo::ai_family, addrinfo::ai_socktype, caddr_t, and so.

Referenced by bindto(), and query().

◆ hostname()

char * ucommon::Socket::hostname ( const 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.

Definition at line 2911 of file socket.cpp.

References ucommon::getnameinfo(), ucommon::max(), and NI_NOFQDN.

◆ init()

void ucommon::Socket::init ( void  )
static

Initialize socket subsystem.

Definition at line 531 of file socket.cpp.

Referenced by ucommon::Socket::address::address(), create(), ucommon::secure::init(), ost::MainThread::MainThread(), and Socket().

◆ is_null()

bool ucommon::Socket::is_null ( const 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.

Definition at line 3455 of file socket.cpp.

References ucommon::str().

◆ is_numeric()

bool ucommon::Socket::is_numeric ( const 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.

Definition at line 3472 of file socket.cpp.

References ucommon::str().

Referenced by query().

◆ is_pending()

bool ucommon::Socket::is_pending ( 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.

Definition at line 2623 of file socket.cpp.

References pending().

◆ join() [1/2]

int ucommon::Socket::join ( const struct addrinfo list,
const int  ifindex = 0 
)

Join socket to multicast group.

Parameters
listof groups to join.
Returns
0 on success, -1 on error.

Definition at line 2276 of file socket.cpp.

References ucommon::addr(), ioerr, and so.

Referenced by ucommon::Socket::address::add(), and ost::Socket::join().

◆ join() [2/2]

int ucommon::Socket::join ( socket_t  socket,
const struct addrinfo list,
const int  ifindex = 0 
)
static

Join socket descriptor to multicast group.

Parameters
socketdescriptor.
listof groups to join.
Returns
0 on success, -1 on error.

Definition at line 2364 of file socket.cpp.

References ucommon::addr(), addrinfo::ai_addr, addrinfo::ai_family, addrinfo::ai_next, error(), family(), INVALID_SOCKET, sockaddr_internet::ipv4, len(), and so.

◆ keepalive() [1/2]

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 991 of file socket.h.

◆ keepalive() [2/2]

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.

Definition at line 2197 of file socket.cpp.

References err(), error(), INVALID_SOCKET, and so.

◆ keyhost()

unsigned ucommon::Socket::keyhost ( const 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.

Definition at line 3057 of file socket.cpp.

References ucommon::addr(), caddr_t, and len().

◆ keyindex()

unsigned ucommon::Socket::keyindex ( const 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.

Definition at line 3086 of file socket.cpp.

References ucommon::addr(), caddr_t, len(), and port().

◆ len()

◆ listento()

int ucommon::Socket::listento ( socket_t  socket,
const 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.

Definition at line 2988 of file socket.cpp.

References error(), len(), and so.

◆ local()

int ucommon::Socket::local ( 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.

Definition at line 3493 of file socket.cpp.

References ucommon::addr().

◆ loopback() [1/2]

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 1018 of file socket.h.

◆ loopback() [2/2]

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.

Definition at line 2060 of file socket.cpp.

References ucommon::addr(), err(), error(), family(), INVALID_SOCKET, len(), and so.

◆ multicast() [1/2]

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.

Definition at line 2214 of file socket.cpp.

References ucommon::addr(), error(), INVALID_SOCKET, len(), so, and ttl().

◆ multicast() [2/2]

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 1009 of file socket.h.

◆ nodelay() [1/2]

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

Set tcp nodelay option on socket descriptor.

Parameters
socketdescriptor.
Returns
0 if success, -1 if error.

Definition at line 2179 of file socket.cpp.

References err(), error(), INVALID_SOCKET, and so.

◆ nodelay() [2/2]

int ucommon::Socket::nodelay ( void  ) const
inline

Set nodelay option for tcp socket.

Returns
0 if successful, -1 on error.

Definition at line 948 of file socket.h.

◆ operator bool()

ucommon::Socket::operator bool ( ) const

Test if socket is valid.

Returns
true if valid socket.

Definition at line 1855 of file socket.cpp.

References INVALID_SOCKET, and so.

◆ operator socket_t()

ucommon::Socket::operator socket_t ( ) const
inline

Get the socket descriptor by casting.

Returns
socket descriptor of object.

Definition at line 1297 of file socket.h.

◆ operator!()

bool ucommon::Socket::operator! ( void  ) const

Test if socket is invalid.

Returns
true if socket is invalid.

Definition at line 1862 of file socket.cpp.

References INVALID_SOCKET, and so.

◆ operator*()

socket_t ucommon::Socket::operator* ( ) const
inline

Get the socket descriptor by pointer reference.

Returns
socket descriptor of object.

Definition at line 1305 of file socket.h.

◆ operator=()

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.

Definition at line 1869 of file socket.cpp.

References release(), and so.

◆ peek()

size_t ucommon::Socket::peek ( void *  data,
size_t  number 
) const

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.

Definition at line 1876 of file socket.cpp.

References caddr_t, ucommon::Timer::inf, iowait, len(), MSG_DONTWAIT, so, and wait().

◆ pending() [1/2]

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.

Definition at line 2643 of file socket.cpp.

References INVALID_SOCKET, and so.

◆ pending() [2/2]

unsigned ucommon::Socket::pending ( void  ) const
inline

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

Returns
bytes pending.

Definition at line 973 of file socket.h.

Referenced by is_pending(), ost::Socket::isPending(), and ost::TCPStream::isPending().

◆ port() [1/2]

◆ port() [2/2]

static in_port_t ucommon::Socket::port ( const 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 1729 of file socket.h.

References port.

◆ printf() [1/2]

size_t ucommon::Socket::printf ( const char *  format,
  ... 
)

Print formatted string to socket.

Parameters
formatstring.
Returns
number of bytes sent.

Definition at line 3382 of file socket.cpp.

References writes().

◆ printf() [2/2]

ssize_t ucommon::Socket::printf ( socket_t  socket,
const char *  format,
  ... 
)
static

Print formatted string to socket.

Parameters
socketto write to.
formatstring.
Returns
number of bytes sent, -1 if error.

Definition at line 3396 of file socket.cpp.

References sendto(), and so.

◆ priority() [1/2]

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 1133 of file socket.h.

◆ priority() [2/2]

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.

Definition at line 2130 of file socket.cpp.

References err(), error(), INVALID_SOCKET, and so.

◆ query() [1/4]

struct::addrinfo * ucommon::Socket::query ( const char *  host,
const char *  service,
int  type = SOCK_STREAM,
int  protocol = 0 
)
static

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.

Definition at line 956 of file socket.cpp.

References AF_UNSPEC, addrinfo::ai_family, addrinfo::ai_flags, AI_NUMERICHOST, AI_NUMERICSERV, AI_PASSIVE, addrinfo::ai_protocol, addrinfo::ai_socktype, DEFAULT_FAMILY, family(), ucommon::getaddrinfo(), is_numeric(), result(), ucommon::String::set(), type(), and ucommon::v6only.

Referenced by ucommon::Socket::address::add(), ucommon::Socket::address::insert(), main(), ucommon::tcpstream::open(), ucommon::Socket::address::set(), and ost::UDPSocket::setPeer().

◆ query() [2/4]

char * ucommon::Socket::query ( const 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.

Definition at line 3133 of file socket.cpp.

References ucommon::addr(), and ucommon::String::set().

◆ query() [3/4]

void ucommon::Socket::query ( int  family)
static

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

Parameters
familyto select.

Definition at line 544 of file socket.cpp.

References ucommon::query_family.

◆ query() [4/4]

socklen_t ucommon::Socket::query ( socket_t  socket,
struct sockaddr_storage address,
const char *  hostname,
const 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.

Definition at line 2952 of file socket.cpp.

References addrinfo::ai_addr, addrinfo::ai_addrlen, ucommon::freeaddrinfo(), ucommon::getaddrinfo(), hinting(), len(), and so.

◆ readfrom()

size_t ucommon::Socket::readfrom ( void *  data,
size_t  number,
struct sockaddr_storage address = NULL 
)

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.

Definition at line 1899 of file socket.cpp.

References caddr_t, error(), ucommon::Timer::inf, ioerr, iowait, len(), recvfrom(), result(), so, and wait().

◆ readline() [1/4]

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.

Definition at line 1959 of file socket.cpp.

References error(), ioerr, iowait, ucommon::max(), result(), and so.

Referenced by readline(), and ucommon::str().

◆ readline() [2/4]

stringref_t ucommon::Socket::readline ( size_t  maxsize)

Definition at line 1989 of file socket.cpp.

References ucommon::stringref< R >::create(), iowait, out, readline(), result(), and so.

◆ readline() [3/4]

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.

Definition at line 2004 of file socket.cpp.

References caddr_t, ucommon::max(), so, timeout, and wait().

◆ readline() [4/4]

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.

Definition at line 1974 of file socket.cpp.

References ucommon::String::clear(), ucommon::String::data(), error(), ucommon::String::fix(), ioerr, iowait, readline(), result(), ucommon::String::size(), and so.

◆ recvfrom()

ssize_t ucommon::Socket::recvfrom ( socket_t  socket,
void *  buffer,
size_t  size,
int  flags = 0,
struct sockaddr_storage address = NULL 
)
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.

Definition at line 1890 of file socket.cpp.

References ucommon::addr(), caddr_t, len(), and so.

Referenced by ucommon::tcpstream::_read(), ost::Socket::getSender(), readfrom(), and ost::UDPSocket::receive().

◆ recvsize() [1/2]

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.

Definition at line 2593 of file socket.cpp.

References caddr_t, err(), error(), and so.

◆ recvsize() [2/2]

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 1062 of file socket.h.

Referenced by ucommon::tcpstream::allocate().

◆ release() [1/3]

void ucommon::Socket::release ( socket_t  socket)
static

Release (close) a socket.

Parameters
socketto close.

Definition at line 1754 of file socket.cpp.

References shutdown(), and so.

◆ release() [2/3]

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.

Definition at line 948 of file socket.cpp.

References ucommon::freeaddrinfo().

◆ release() [3/3]

◆ remote()

int ucommon::Socket::remote ( 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.

Definition at line 3500 of file socket.cpp.

References ucommon::addr().

◆ replyto()

static ssize_t ucommon::Socket::replyto ( socket_t  socket,
const void *  buffer,
size_t  size,
int  flags,
const 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 1507 of file socket.h.

References buffer.

◆ segsize() [1/2]

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.

Definition at line 2883 of file socket.cpp.

References IPPROTO_DCCP, so, SOCK_DCCP, and type().

◆ segsize() [2/2]

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 1102 of file socket.h.

◆ sendsize() [1/2]

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.

Definition at line 2577 of file socket.cpp.

References caddr_t, err(), error(), INVALID_SOCKET, and so.

◆ sendsize() [2/2]

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 1044 of file socket.h.

Referenced by ucommon::tcpstream::allocate().

◆ sendto()

ssize_t ucommon::Socket::sendto ( socket_t  socket,
const void *  buffer,
size_t  size,
int  flags = 0,
const struct sockaddr *  address = NULL 
)
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.

Definition at line 1936 of file socket.cpp.

References caddr_t, len(), MSG_NOSIGNAL, and so.

Referenced by ucommon::tcpstream::_write(), printf(), and writeto().

◆ sendwait() [1/2]

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.

Definition at line 2561 of file socket.cpp.

References caddr_t, err(), error(), INVALID_SOCKET, and so.

◆ sendwait() [2/2]

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 1053 of file socket.h.

Referenced by ucommon::tcpstream::allocate().

◆ shutdown()

void ucommon::Socket::shutdown ( void  )
inline

Shutdown the socket communication channel.

Definition at line 1140 of file socket.h.

Referenced by cancel(), ost::TCPSocket::reject(), release(), ost::UDPReceive::UDPReceive(), ost::UDPTransmit::UDPTransmit(), and via().

◆ store() [1/2]

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

Store an address into an internet address object.

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

Definition at line 3285 of file socket.cpp.

References len().

◆ store() [2/2]

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

Store an address into an address object.

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

Definition at line 3276 of file socket.cpp.

References copy().

Referenced by ucommon::Type::InetAddress::InetAddress(), ucommon::Type::SockAddress::operator=(), ucommon::Type::InetAddress::operator=(), and ucommon::Type::SockAddress::SockAddress().

◆ tos() [1/2]

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 1123 of file socket.h.

Referenced by ost::Socket::setTypeOfService().

◆ tos() [2/2]

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.

Definition at line 2146 of file socket.cpp.

References err(), error(), INVALID_SOCKET, and so.

◆ ttl() [1/2]

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

Set the time to live for the socket descriptor.

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

Definition at line 2097 of file socket.cpp.

References ucommon::addr(), err(), error(), family(), INVALID_SOCKET, len(), and so.

◆ ttl() [2/2]

int ucommon::Socket::ttl ( uint8_t  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 1035 of file socket.h.

Referenced by multicast().

◆ type() [1/2]

int ucommon::Socket::type ( const socket_t  socket)
static

Get the type of a socket.

Parameters
socketdescriptor.
Returns
socket type.

Definition at line 2848 of file socket.cpp.

References caddr_t, and so.

◆ type() [2/2]

int ucommon::Socket::type ( void  ) const
inline

◆ v4mapping()

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.

Definition at line 536 of file socket.cpp.

References ucommon::v6only.

◆ via()

int ucommon::Socket::via ( struct sockaddr *  address,
const struct sockaddr *  target,
socklen_t  size = 0 
)
static

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

Parameters
addressof interface found.
targetaddress.
sizeof interface, 0 used for older code
Returns
0 on success, -1 on error.

Definition at line 3189 of file socket.cpp.

References AF_UNSPEC, error(), INVALID_SOCKET, len(), shutdown(), so, and ucommon::socket_mapping().

◆ wait() [1/3]

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.

Definition at line 2670 of file socket.cpp.

References ucommon::Timer::inf, INVALID_SOCKET, so, and timeout.

◆ wait() [2/3]

bool ucommon::Socket::wait ( timeout_t  timeout = 0) const

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.

Definition at line 2665 of file socket.cpp.

References so, and timeout.

Referenced by ucommon::tcpstream::_wait(), connected(), peek(), readfrom(), readline(), and ucommon::ListenSocket::wait().

◆ wait() [3/3]

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.

Definition at line 2292 of file socket.cpp.

References blocking(), ucommon::Timer::inf, ioerr, iowait, so, and timeout.

◆ waitSending()

bool ucommon::Socket::waitSending ( timeout_t  timeout = 0) const

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.

Definition at line 2725 of file socket.cpp.

References ucommon::Timer::inf, INVALID_SOCKET, so, and timeout.

◆ writes()

size_t ucommon::Socket::writes ( const 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.

Definition at line 1948 of file socket.cpp.

References ucommon::str(), and writeto().

Referenced by printf().

◆ writeto()

size_t ucommon::Socket::writeto ( const void *  data,
size_t  number,
const struct sockaddr *  address = NULL 
)

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.

Definition at line 1918 of file socket.cpp.

References caddr_t, error(), ioerr, len(), MSG_NOSIGNAL, result(), sendto(), and so.

Referenced by writes().

Friends And Related Function Documentation

◆ address

Member Data Documentation

◆ ioerr

int ucommon::Socket::ioerr
protected

Definition at line 331 of file socket.h.

Referenced by connectto(), disconnect(), drop(), join(), readfrom(), readline(), release(), Socket(), wait(), and writeto().

◆ iowait

timeout_t ucommon::Socket::iowait
protected

Definition at line 332 of file socket.h.

Referenced by peek(), readfrom(), readline(), release(), Socket(), and wait().

◆ so

socket_t ucommon::Socket::so
protected

Definition at line 330 of file socket.h.

Referenced by ucommon::ListenSocket::accept(), acceptfrom(), ost::DCCPSocket::available(), bindto(), blocking(), broadcast(), cancel(), ccid(), ost::Socket::check(), ost::UDPSocket::connect(), ost::DCCPSocket::connect(), ost::UDPTransmit::connect(), ost::TCPStream::connect(), ost::UDPReceive::connect(), connected(), connectto(), create(), ucommon::ListenSocket::create(), ost::DCCPSocket::DCCPSocket(), ost::DCCPSocket::disconnect(), ost::UDPSocket::disconnect(), ost::TCPStream::disconnect(), disconnect(), drop(), ost::Socket::dupSocket(), ost::Socket::endSocket(), error(), family(), ost::UDPSocket::getInterfaceIndex(), ost::Socket::getLocal(), ost::Socket::getPeer(), ost::DCCPSocket::getRxCCID(), ost::TCPStream::getSegmentSize(), ost::Socket::getSender(), ost::DCCPSocket::getTxCCID(), hinting(), ost::Socket::isPending(), join(), keepalive(), ucommon::ListenSocket::ListenSocket(), listento(), loopback(), multicast(), nodelay(), operator bool(), operator!(), ost::Socket::operator=(), operator=(), ost::TCPStream::overflow(), peek(), pending(), ost::TCPStream::printf(), printf(), priority(), query(), ost::Socket::readData(), readfrom(), ost::Socket::readLine(), readline(), ost::UDPSocket::receive(), ost::Socket::receiveBuffer(), ost::Socket::receiveLimit(), ost::Socket::receiveTimeout(), recvfrom(), recvsize(), ost::TCPSocket::reject(), release(), ost::TCPStream::segmentBuffering(), segsize(), ost::UDPSocket::send(), ost::Socket::sendBuffer(), ost::Socket::sendLimit(), sendsize(), ost::Socket::sendTimeout(), sendto(), sendwait(), ost::Socket::setBroadcast(), ost::DCCPSocket::setCCID(), ost::Socket::setCompletion(), ost::Socket::setKeepAlive(), ost::Socket::setLoopbackByFamily(), ost::Socket::setMulticastByFamily(), ost::Socket::setNoDelay(), ost::Socket::setRouting(), ost::TCPSocket::setSegmentSize(), ost::Socket::setSocket(), ost::Socket::setTimeToLiveByFamily(), ost::Socket::setTypeOfService(), ost::Socket::Socket(), Socket(), ost::TCPSession::TCPSession(), ost::TCPSocket::TCPSocket(), tos(), ttl(), type(), ost::UDPBroadcast::UDPBroadcast(), ost::UDPReceive::UDPReceive(), ost::UDPSocket::UDPSocket(), ost::UDPTransmit::UDPTransmit(), ost::TCPStream::underflow(), via(), wait(), ost::TCPSession::waitConnection(), waitSending(), ost::Socket::writeData(), and writeto().


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