MistServer  2.5.3-Pro-19-gf5e75b1 ( Generic_64)
Public Member Functions | Data Fields | Private Attributes
Socket::UDPConnection Class Reference

#include <socket.h>

Public Member Functions

 UDPConnection (const UDPConnection &o)
 Copies a UDP socket, re-allocating local copies of any needed structures. More...
 
 UDPConnection (const UDPConnection &o)
 
 UDPConnection (bool nonblock=false)
 Create a new UDP Socket. More...
 
 UDPConnection (bool nonblock=false)
 
 ~UDPConnection ()
 Closes the UDP socket, cleans up any memory allocated by the socket. More...
 
 ~UDPConnection ()
 
int bind (int port, std::string iface="", const std::string &multicastAddress="")
 
int bind (int port, std::string iface="", const std::string &multicastAddress="")
 Bind to a port number, returning the bound port. More...
 
void GetDestination (std::string &hostname, uint32_t &port)
 Gets the properties of the receiving end of this UDP socket. More...
 
void GetDestination (std::string &hostname, uint32_t &port)
 
int getSock ()
 
int getSock ()
 
bool Receive ()
 Attempt to receive a UDP packet. More...
 
bool Receive ()
 
void SendNow (const std::string &data)
 
void SendNow (const std::string &data)
 Sends a UDP datagram using the buffer sdata. More...
 
void SendNow (const char *data)
 
void SendNow (const char *data)
 Sends a UDP datagram using the buffer sdata. More...
 
void SendNow (const char *data, size_t len)
 Sends a UDP datagram using the buffer sdata of length len. More...
 
void SendNow (const char *data, size_t len)
 
void setBlocking (bool blocking)
 Sets the socket to be blocking if the parameters is true. More...
 
void setBlocking (bool blocking)
 
void SetDestination (std::string hostname, uint32_t port)
 
void SetDestination (std::string hostname, uint32_t port)
 Stores the properties of the receiving end of this UDP socket. More...
 

Data Fields

char * data
 Holds the last received packet. More...
 
unsigned int data_len
 The size in bytes of the last received packet. More...
 

Private Attributes

unsigned int data_size
 The size in bytes of the allocated space in the data pointer. More...
 
void * destAddr
 Destination address pointer. More...
 
unsigned int destAddr_size
 Size of the destination address pointer. More...
 
unsigned int down
 Amount of bytes transferred down. More...
 
bool isIPv6
 
std::string remotehost
 Stores remote host address. More...
 
int sock
 Internally saved socket number. More...
 
unsigned int up
 Amount of bytes transferred up. More...
 

Constructor & Destructor Documentation

Socket::UDPConnection::UDPConnection ( const UDPConnection o)

Copies a UDP socket, re-allocating local copies of any needed structures.

The data/data_size/data_len variables are not copied over.

Socket::UDPConnection::UDPConnection ( bool  nonblock = false)

Create a new UDP Socket.

Will attempt to create an IPv6 UDP socket, on fail try a IPV4 UDP socket. If both fail, prints an DLVL_FAIL debug message.

Parameters
nonblockWhether the socket should be nonblocking.
Socket::UDPConnection::~UDPConnection ( )

Closes the UDP socket, cleans up any memory allocated by the socket.

Socket::UDPConnection::UDPConnection ( const UDPConnection o)
Socket::UDPConnection::UDPConnection ( bool  nonblock = false)
Socket::UDPConnection::~UDPConnection ( )

Member Function Documentation

int Socket::UDPConnection::bind ( int  port,
std::string  iface = "",
const std::string &  multicastInterfaces = "" 
)

Bind to a port number, returning the bound port.

Attempts to bind over IPv6 first. If it fails, attempts to bind over IPv4. If that fails too, gives up and returns zero. Prints a debug message at DLVL_FAIL level if binding failed.

Returns
Actually bound port number, or zero on error.
int Socket::UDPConnection::bind ( int  port,
std::string  iface = "",
const std::string &  multicastAddress = "" 
)
void Socket::UDPConnection::GetDestination ( std::string &  destIp,
uint32_t &  port 
)

Gets the properties of the receiving end of this UDP socket.

This will be the receiving end for all SendNow calls.

void Socket::UDPConnection::GetDestination ( std::string &  hostname,
uint32_t &  port 
)
int Socket::UDPConnection::getSock ( )
int Socket::UDPConnection::getSock ( )
bool Socket::UDPConnection::Receive ( )

Attempt to receive a UDP packet.

This will automatically allocate or resize the internal data buffer if needed. If a packet is received, it will be placed in the "data" member, with it's length in "data_len".

Returns
True if a packet was received, false otherwise.
bool Socket::UDPConnection::Receive ( )
void Socket::UDPConnection::SendNow ( const std::string &  sdata)

Sends a UDP datagram using the buffer sdata.

This function simply calls SendNow(const char*, size_t)

void Socket::UDPConnection::SendNow ( const std::string &  data)
void Socket::UDPConnection::SendNow ( const char *  sdata)

Sends a UDP datagram using the buffer sdata.

sdata is required to be NULL-terminated. This function simply calls SendNow(const char*, size_t)

void Socket::UDPConnection::SendNow ( const char *  data)
void Socket::UDPConnection::SendNow ( const char *  data,
size_t  len 
)
void Socket::UDPConnection::SendNow ( const char *  sdata,
size_t  len 
)

Sends a UDP datagram using the buffer sdata of length len.

Does not do anything if len < 1. Prints an DLVL_FAIL level debug message if sending failed.

void Socket::UDPConnection::setBlocking ( bool  blocking)

Sets the socket to be blocking if the parameters is true.

Sets the socket to be non-blocking otherwise.

void Socket::UDPConnection::setBlocking ( bool  blocking)
void Socket::UDPConnection::SetDestination ( std::string  destIp,
uint32_t  port 
)

Stores the properties of the receiving end of this UDP socket.

This will be the receiving end for all SendNow calls.

void Socket::UDPConnection::SetDestination ( std::string  hostname,
uint32_t  port 
)

Field Documentation

char * Socket::UDPConnection::data

Holds the last received packet.

unsigned int Socket::UDPConnection::data_len

The size in bytes of the last received packet.

unsigned int Socket::UDPConnection::data_size
private

The size in bytes of the allocated space in the data pointer.

void * Socket::UDPConnection::destAddr
private

Destination address pointer.

unsigned int Socket::UDPConnection::destAddr_size
private

Size of the destination address pointer.

unsigned int Socket::UDPConnection::down
private

Amount of bytes transferred down.

bool Socket::UDPConnection::isIPv6
private
std::string Socket::UDPConnection::remotehost
private

Stores remote host address.

int Socket::UDPConnection::sock
private

Internally saved socket number.

unsigned int Socket::UDPConnection::up
private

Amount of bytes transferred up.


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