ucc::Socket::address Class Reference

A generic socket address class. More...

#include <socket.h>

Public Member Functions

 address (int family, const char *address, int type=SOCK_STREAM, int protocol=0)
 Construct a socket address.
 address (Socket &socket, const char *hostname, const char *service=((void *) 0))
 Construct a socket address for an existing socket.
 address (socket_t socket, const char *hostname, const char *service=((void *) 0))
 Construct a socket address for a socket descriptor.
 address (const char *hostname, unsigned service=0, int family=0)
 Construct a socket address from host and service.
 address ()
 Construct an empty address.
 address (const address &reference)
 Copy constructor.
 ~address ()
 Destroy address.
struct sockaddr * getAddr (void)
 Get the first socket address in our address list.
struct sockaddr * get (int family)
 Get the first socket address of specified family from our list.
int getfamily (void)
 Get the family of a socket address by first entry.
struct sockaddr * find (struct sockaddr *addr)
 Find a specific socket address in our address list.
struct addrinfo * getList (void)
 Get the full socket address list from the object.
 operator struct addrinfo * ()
 Get the full socket address list by casted reference.
struct addrinfo * operator* ()
 Return the full socket address list by pointer reference.
 operator bool ()
 Test if the address list is valid.
bool operator! ()
 Test if we have no address list.
 operator struct sockaddr * ()
 Get the first socket address by casted reference.
void clear (void)
 Clear current object.
void set (const char *hostname, const char *service=((void *) 0), int family=0, int type=SOCK_STREAM)
 Set the host addresses to form a new list.
void add (const char *hostname, const char *service=((void *) 0), int family=0, int type=SOCK_STREAM)
 Append additional host addresses to our list.
void set (int family, const char *address, int type=SOCK_STREAM, int protocol=0)
 Set an entry for host binding.
void add (sockaddr *address)
 Add an individual socket address to our address list.
bool remove (struct sockaddr *address)
 Remove an individual socket address from our address list.
bool insert (struct sockaddr *address)
 Insert an individual socket address to our address list only if unique.
unsigned insert (struct addrinfo *address, int family=0)
 Insert unique members from another socket address list to ours.
unsigned remove (struct addrinfo *address, int family=0)
 Remove members from another socket address list from ours.
void copy (const struct addrinfo *address)
 Copy an existing addrinfo into our object.
void set (struct sockaddr *address)
 Set an individual socket address for our address list.
void set (const char *hostname, unsigned service=0, int family=0)
 Set a socket address from host and service.

Static Public Member Functions

static struct sockaddr * dup (struct sockaddr *address)
 Duplicate a socket address.
static struct sockaddr_in * ipv4 (struct sockaddr *address)
 Convert address object into ipv4 address.
static struct sockaddr_in6 * ipv6 (struct sockaddr *address)
 Convert address object into ipv6 address.

Protected Attributes

struct addrinfo * list

Detailed Description

A generic socket address class.

This class uses the addrinfo list to store socket multiple addresses in a protocol and family independent manner. Hence, this address class can be used for ipv4 and ipv6 sockets, for assigning connections to multiple hosts, etc. The address class will call the resolver when passed host names.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 307 of file socket.h.


Constructor & Destructor Documentation

ucc::Socket::address::address ( int  family,
const char *  address,
int  type = SOCK_STREAM,
int  protocol = 0 
)

Construct a socket address.

Parameters:
address or hostname.
family of socket address. Needed when hostnames are used.
type of socket (stream, dgram, etc).
protocol number of socket.
ucc::Socket::address::address ( Socket socket,
const char *  hostname,
const char *  service = ((void *) 0) 
)

Construct a socket address for an existing socket.

Parameters:
socket to use for family of socket address.
hostname or ip address. The socket family is used for hostnames.
service port or name we are referencing or NULL.
ucc::Socket::address::address ( socket_t  socket,
const char *  hostname,
const char *  service = ((void *) 0) 
)

Construct a socket address for a socket descriptor.

Parameters:
socket descriptor to use for family.
hostname or address to use.
service port or name we are referencing or NULL.
ucc::Socket::address::address ( const char *  hostname,
unsigned  service = 0,
int  family = 0 
)

Construct a socket address from host and service.

Parameters:
hostname or address to use.
service port or 0.
family of socket address.
ucc::Socket::address::address ( const address reference  ) 

Copy constructor.

Parameters:
reference to object to copy from.
ucc::Socket::address::~address (  ) 

Destroy address.

Deallocate addrinfo structure.


Member Function Documentation

void ucc::Socket::address::add ( sockaddr *  address  ) 

Add an individual socket address to our address list.

Parameters:
address to add.
void ucc::Socket::address::add ( const char *  hostname,
const char *  service = ((void *) 0),
int  family = 0,
int  type = SOCK_STREAM 
)

Append additional host addresses to our list.

Parameters:
hostname or address to resolve.
service name or port number, or NULL if not used.
family of hostname.
type of socket.
void ucc::Socket::address::copy ( const struct addrinfo *  address  ) 

Copy an existing addrinfo into our object.

This is also used to support the copy constructor.

Parameters:
address list to copy from.
static struct sockaddr* ucc::Socket::address::dup ( struct sockaddr *  address  )  [static, read]

Duplicate a socket address.

Parameters:
address to duplicate.
Returns:
duplicate address object.
struct sockaddr* ucc::Socket::address::find ( struct sockaddr *  addr  )  [read]

Find a specific socket address in our address list.

Returns:
matching address from list or NULL if not found.
struct sockaddr* ucc::Socket::address::get ( int  family  )  [read]

Get the first socket address of specified family from our list.

Parameters:
family to seek.
Returns:
first socket address of family or NULL if none.
struct sockaddr* ucc::Socket::address::getAddr ( void   )  [read]

Get the first socket address in our address list.

Returns:
first socket address or NULL if none.
int ucc::Socket::address::getfamily ( void   ) 

Get the family of a socket address by first entry.

Returns:
family of first socket address or 0 if none.
struct addrinfo* ucc::Socket::address::getList ( void   )  [inline, read]

Get the full socket address list from the object.

Returns:
addrinfo list we resolved or NULL if none.

Definition at line 391 of file socket.h.

unsigned ucc::Socket::address::insert ( struct addrinfo *  address,
int  family = 0 
)

Insert unique members from another socket address list to ours.

Parameters:
address list to insert into list.
family to scan for or 0 for all.
Returns:
count of addresses added.
bool ucc::Socket::address::insert ( struct sockaddr *  address  ) 

Insert an individual socket address to our address list only if unique.

Parameters:
address to insert into list.
Returns:
true if inserted, false if duplicate.
static struct sockaddr_in* ucc::Socket::address::ipv4 ( struct sockaddr *  address  )  [static, read]

Convert address object into ipv4 address.

Parameters:
address to convert.
Returns:
new ipv4 address or NULL if not ipv4.
static struct sockaddr_in6* ucc::Socket::address::ipv6 ( struct sockaddr *  address  )  [static, read]

Convert address object into ipv6 address.

Parameters:
address to convert.
Returns:
new ipv6 address or NULL if not ipv6.
ucc::Socket::address::operator bool (  )  [inline]

Test if the address list is valid.

Returns:
true if we have an address list.

Definition at line 412 of file socket.h.

ucc::Socket::address::operator struct addrinfo * (  )  [inline]

Get the full socket address list by casted reference.

Returns:
addrinfo list we resolved or NULL if none.

Definition at line 398 of file socket.h.

ucc::Socket::address::operator struct sockaddr * (  )  [inline]

Get the first socket address by casted reference.

Returns:
first socket address we resolved or NULL if none.

Definition at line 426 of file socket.h.

bool ucc::Socket::address::operator! (  )  [inline]

Test if we have no address list.

Returns:
true if we have no address list.

Definition at line 419 of file socket.h.

struct addrinfo* ucc::Socket::address::operator* (  )  [inline, read]

Return the full socket address list by pointer reference.

Returns:
addrinfo list we resolved or NULL if none.

Definition at line 405 of file socket.h.

unsigned ucc::Socket::address::remove ( struct addrinfo *  address,
int  family = 0 
)

Remove members from another socket address list from ours.

Parameters:
address list to remove from list.
family to scan for or 0 for all.
Returns:
count of addresses removed.
bool ucc::Socket::address::remove ( struct sockaddr *  address  ) 

Remove an individual socket address from our address list.

Parameters:
address to remove.
Returns:
true if found and removed, false if not found.
void ucc::Socket::address::set ( const char *  hostname,
unsigned  service = 0,
int  family = 0 
)

Set a socket address from host and service.

Parameters:
hostname or address to use.
service port or 0.
family of socket address.
void ucc::Socket::address::set ( struct sockaddr *  address  ) 

Set an individual socket address for our address list.

Parameters:
address to add.
void ucc::Socket::address::set ( int  family,
const char *  address,
int  type = SOCK_STREAM,
int  protocol = 0 
)

Set an entry for host binding.

Parameters:
address or hostname.
family of socket address. Needed when hostnames are used.
type of socket (stream, dgram, etc).
protocol number of socket.
void ucc::Socket::address::set ( const char *  hostname,
const char *  service = ((void *) 0),
int  family = 0,
int  type = SOCK_STREAM 
)

Set the host addresses to form a new list.

Parameters:
hostname or address to resolve.
service name or port number, or NULL if not used.
family of hostname.
type of socket.

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

Generated by  doxygen 1.6.2