Loading...
Searching...
No Matches
ASSA::UDPSocket Class Reference

`#include <UDPSocket.h>`

Inheritance diagram for ASSA::UDPSocket:

## Public Member Functions

| UDPSocket ()
| Default constructor.
| UDPSocket (const handler_t fd_)
| Constructor.
virtual | ~UDPSocket ()
| Destructor will close connection.
bool | open (const int domain_)
| Create socket.
bool | close ()
| Close socket connection.
bool | bind (const Address &my_address_)
| Server in UDP client-server scenario has to bind socket to its local well-known port.
handler_t | getHandler () const
| Get socket file descriptor.
const int | getDomain () const
| Get socket domain type.
Public Member Functions inherited from ASSA::Socket
| Socket ()
| Constructor.
virtual | ~Socket ()
| Destructor.
virtual bool | connect (const Address &address_)
| Make a connection.
virtual int | write (const char *buf_, const u_int size_)
| Write specified number of bytes to the socket.
int | getBytesAvail (void) const
| Return number of bytes available in socket receive buffer.
virtual int | read (char *buf_, const u_int size_)
| Read expected number of bytes from the socket.
int | ignore (int n_=INT_MAX, int delim_=EOF)
| Extracts bytes and discards them.
virtual Streambuf * | rdbuf ()
| Return a pointer to the Streambuf associated with the stream.
virtual Streambuf * | rdbuf (Streambuf *)
| Virtual function that sets new socket buffer and returns the old one.
virtual int | in_avail () const =0
| This function returns the number of characters immediately available in the get area of the underlying Socketbuf buffer without making a system call if Socket is doing buffering I/O.
virtual Socket & | flush ()
| This function simply calls the public "synchronizing" function rdbuf()->pubsync() (assuming the associated streambuf object is present).
bool | turnOptionOn (opt_t opt_)
| Enable socket option.
bool | turnOptionOff (opt_t opt_)
| Disable socket option.
bool | setOption (opt_t opt_, int arg_)
| Set socket option to value required.
int | getOption (opt_t opt_) const
| Get current value of a socket option.
| operator void * () const
| Convertion to void* (for testing where bool is required).
bool | operator! () const
| Alias to fail().
iostate | rdstate () const
| Retrieve state of the socket.
void | clear (iostate state_=Socket::goodbit)
| Clear the socket state. Closed socket remains in bad state.
void | setstate (iostate flag_)
| Set socket state to flag_ by adding flag_ to the existing state.
bool | good () const
| Indicates no error on the socket.
bool | eof () const
| An earlier extraction operation has encountered the end of file of the input stream (peer closed its socket).
bool | fail () const
| Indicates that earlier extraction opeartion has failed to match the required pattern of input.
bool | bad () const
| Socket fd == -1 or read/write error occured or some loss of integrity on assosiated stream buffer.
void | dumpState () const
| Write state bits of the socket to the log file.
Socket & | operator>> (char &c)
| Input of built-in char type. The value will be XDR-decoded.
Socket & | operator>> (unsigned char &c_)
| Input of built-in u_char type. The value will be XDR-decoded.
Socket & | operator>> (signed char &c_)
| Input of built-in signed char type. The value will be XDR-decoded.
Socket & | operator>> (std::string &s_)
| Input of STL string type. The string content will be XDR-decoded.
Socket & | operator>> (short &n_)
| Input of built-in short type. The value will be XDR-decoded.
Socket & | operator>> (unsigned short &n_)
| Input of built-in u_short type. The value will be XDR-decoded.
Socket & | operator>> (int &n_)
| Input of built-in integer type. The value will be XDR-decoded.
Socket & | operator>> (unsigned int &n_)
| Input of built-in u_int type. The value will be XDR-decoded.
Socket & | operator>> (long &n_)
| Input of built-in long type. The value will be XDR-decoded.
Socket & | operator>> (unsigned long &n_)
| Input of built-in u_long type. The value will be XDR-decoded.
Socket & | operator>> (float &n_)
| Input of built-in float type. The value will be XDR-decoded.
Socket & | operator>> (double &n_)
| Input of built-in double type. The value will be XDR-decoded.
Socket & | operator<< (char c)
| Output of built-in char type. The value will be XDR-encoded.
Socket & | operator<< (unsigned char c_)
| Output of built-in u_char type. The value will be XDR-encoded.
Socket & | operator<< (signed char c_)
| Output of built-in signed char type. The value will be XDR-encoded.
Socket & | operator<< (const std::string &s_)
| Output of STL string type. The value will be XDR-encoded.
Socket & | operator<< (short n_)
| Output of built-in short type. The value will be XDR-encoded.
Socket & | operator<< (unsigned short n_)
| Output of built-in u_short type. The value will be XDR-encoded.
Socket & | operator<< (int n_)
| Output of built-in integer type. The value will be XDR-encoded.
Socket & | operator<< (unsigned int n_)
| Output of built-in u_int type. The value will be XDR-encoded.
Socket & | operator<< (long n_)
| Output of built-in long type. The value will be XDR-encoded.
Socket & | operator<< (unsigned long n_)
| Output of built-in u_long type. The value will be XDR-encoded.
Socket & | operator<< (float n_)
| Output of built-in float type. The value will be XDR-encoded.
Socket & | operator<< (double n_)
| Output of built-in double type. The value will be XDR-encoded.
Socket & | operator<< (Socket &(*f)(Socket &))
| Manipulators plug-in operator.

## Protected Member Functions

void | setHandler (const int fd_)
| Set file descriptor.
void | setDomain (const int type_)
| Set socket domain type.
Protected Member Functions inherited from ASSA::Socket
int | set_option (int level_, int optname_, int val_)
| Gateway method of setting socket options.
int | set_fd_options (long flags_)
| Gateway method for setting file descriptor options.
int | clear_fd_options (long flags_)
| Gateway method for clearing file descriptor options.

## Additional Inherited Members

Public Types inherited from ASSA::Socket
enum | io_state_t { goodbit = 0 , eofbit = 1 , failbit = 2 , badbit = 4 }
| State bits: goodbit, eofbit, failbit, badbit. More...
enum | opt_t { reuseaddr , rcvlowat , sndlowat , nonblocking }
| Socket options. More...
typedef int | iostate
typedef unsigned char | IOState
Static Public Member Functions inherited from ASSA::Socket
static size_t | xdr_length (const std::string &s_)
| Give the true length of the XDR-encoded STL string.
static bool | is_little_endian ()
| Determine the endianess of the platform we are on.
static void | close_handler (handler_t &socket_)
| Close socket endpoint in a portable way.
static string | decode_fcntl_flags (long mask_)
| Decipher flags packed into mask_ used in fcntl() call.
Static Public Attributes inherited from ASSA::Socket
static const int | PGSIZE = 4096
| Size of bytes of a kernel page.
Protected Attributes inherited from ASSA::Socket
handler_t | m_fd
| File descriptor.
int | m_type
| Socket domain type.
IOState | m_state
| Control state of the socket.

## Detailed Description

Definition at line 28 of file UDPSocket.h.

## Constructor & Destructor Documentation

## UDPSocket() [1/2]

ASSA::UDPSocket::UDPSocket | ( |  | ) |

inline

Default constructor.

Definition at line 31 of file UDPSocket.h.

{
trace("UDPSocket::UDPSocket()");
}
trace
#define trace(s)
trace() is used to trace function call chain in C++ program.
Definition Logger.h:429

References trace.

Referenced by ASSA::ConUDPSocket::ConUDPSocket(), and ASSA::UnConUDPSocket::UnConUDPSocket().

## UDPSocket() [2/2]

ASSA::UDPSocket::UDPSocket | ( | const handler_t | fd_ | ) |

inline

Constructor.

Parameters

  fd_ | file descriptor to use

Definition at line 39 of file UDPSocket.h.

{
trace("UDPSocket::UDPSocket(fd)");
m_fd = fd_;
}
ASSA::Socket::m_fd
handler_t m_fd
File descriptor.
Definition Socket.h:485

References ASSA::Socket::m_fd, and trace.

## ~UDPSocket()

virtual ASSA::UDPSocket::~UDPSocket | ( |  | ) |

inline virtual

Destructor will close connection.

Definition at line 46 of file UDPSocket.h.

{
trace("UDPSocket::~UDPSocket");
}

References trace.

## Member Function Documentation

## bind()

bool UDPSocket::bind | ( | const Address & | my_address_ | ) |

virtual

Server in UDP client-server scenario has to bind socket to its local well-known port.

This is the same bind call as in IPv4 - maybe it should be generalized in parent class.

Parameters

  my_address_ | address to bind to

Implements ASSA::Socket.

Definition at line 51 of file UDPSocket.cpp.

{
trace("UDPSocket::bind");
int ret = ::bind (m_fd, (SA*) my_address_.getAddress(),
my_address_.getLength());
if (ret < 0) {
setstate (Socket::failbit);
return false;
}
return true;
}
ASSA::Address::getAddress
virtual SA * getAddress() const =0
Retrieve pointer to the address structure.
ASSA::Address::getLength
virtual const int getLength() const =0
Return length of the underlying address structure.
ASSA::Socket::setstate
void setstate(iostate flag_)
Set socket state to flag_ by adding flag_ to the existing state.
Definition Socket.h:577
ASSA::Socket::failbit
@ failbit
indicates that an input operation failed to read the expected characters, or that an output operation...
Definition Socket.h:84
ASSA::UDPSocket::bind
bool bind(const Address &my_address_)
Server in UDP client-server scenario has to bind socket to its local well-known port.
Definition UDPSocket.cpp:52
ASSA::SA
struct sockaddr SA
Definition Address.h:33

References bind(), ASSA::Socket::failbit, ASSA::Address::getAddress(), ASSA::Address::getLength(), ASSA::Socket::m_fd, ASSA::Socket::setstate(), and trace.

Referenced by bind().

## close()

bool UDPSocket::close | ( |  | ) |

virtual

Close socket connection.

Returns
  true if success, fail if call to close() failed.

Implements ASSA::Socket.

Definition at line 38 of file UDPSocket.cpp.

{
trace("UDPSocket::close()");
if ( m_fd >= 0 ) {
::close(m_fd);
setstate (Socket::failbit);
m_fd = -1;
}
return true;
}
ASSA::UDPSocket::close
bool close()
Close socket connection.
Definition UDPSocket.cpp:39

References close(), ASSA::Socket::failbit, ASSA::Socket::m_fd, ASSA::Socket::setstate(), and trace.

Referenced by close().

## getDomain()

const int ASSA::UDPSocket::getDomain | ( |  | ) | const

inline virtual

Get socket domain type.

Implements ASSA::Socket.

Definition at line 77 of file UDPSocket.h.

{ return m_type; }
ASSA::Socket::m_type
int m_type
Socket domain type.
Definition Socket.h:488

References ASSA::Socket::m_type.

Referenced by ASSA::ConUDPSocket::unconnect().

## getHandler()

handler_t ASSA::UDPSocket::getHandler | ( |  | ) | const

inline virtual

Get socket file descriptor.

Implements ASSA::Socket.

Definition at line 74 of file UDPSocket.h.

{ return m_fd; }

References ASSA::Socket::m_fd.

Referenced by ASSA::ConUDPSocket::connect(), ASSA::ConUDPSocket::read(), ASSA::UnConUDPSocket::recvfrom(), ASSA::UnConUDPSocket::sendto(), and ASSA::ConUDPSocket::write().

## open()

bool UDPSocket::open | ( | const int | domain_ | ) |

virtual

Create socket.

Socket domain type is specified as AF_INET for internet socket and AF_UNIX for UNIX domain socket (full duplex pipe).

Parameters

  domain_ | domain

Returns
  true if socket is created successfully, false otherwise

Implements ASSA::Socket.

Definition at line 21 of file UDPSocket.cpp.

{
trace("UDPSocket::open");
m_type = domain_;
m_fd = ::socket (m_type, SOCK_DGRAM, 0);
if (m_fd < 0) {
setstate (Socket::failbit);
return false;
}
clear ();
return true;
}
ASSA::Socket::clear
void clear(iostate state_=Socket::goodbit)
Clear the socket state. Closed socket remains in bad state.
Definition Socket.h:571

References ASSA::Socket::clear(), ASSA::Socket::failbit, ASSA::Socket::m_fd, ASSA::Socket::m_type, ASSA::Socket::setstate(), and trace.

## setDomain()

void ASSA::UDPSocket::setDomain | ( | const int | type_ | ) |

inline protected

Set socket domain type.

Definition at line 84 of file UDPSocket.h.

{ m_type = type_; }

References ASSA::Socket::m_type.

## setHandler()

void ASSA::UDPSocket::setHandler | ( | const int | fd_ | ) |

inline protected

Set file descriptor.

Definition at line 81 of file UDPSocket.h.

{ m_fd = fd_; }

References ASSA::Socket::m_fd.

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

- UDPSocket.h
- UDPSocket.cpp