Kea 2.5.8
isc::asiolink::UDPSocket< C > Class Template Reference

The UDPSocket class is a concrete derived class of IOAsioSocket that represents a UDP socket. More...

#include <udp_socket.h>

+ Inheritance diagram for isc::asiolink::UDPSocket< C >:

Public Types

enum  { MIN_SIZE = 4096 }
 

Public Member Functions

 UDPSocket (boost::asio::ip::udp::socket &socket)
 Constructor from an ASIO UDP socket.
 
 UDPSocket (const IOServicePtr &service)
 Constructor.
 
virtual ~UDPSocket ()
 Destructor.
 
virtual void asyncReceive (void *data, size_t length, size_t offset, IOEndpoint *endpoint, C &callback)
 Receive Asynchronously.
 
virtual void asyncSend (const void *data, size_t length, const IOEndpoint *endpoint, C &callback)
 Send Asynchronously.
 
virtual void cancel ()
 Cancel I/O On Socket.
 
virtual void close ()
 Close socket.
 
virtual int getNative () const
 Return file descriptor of underlying socket.
 
virtual int getProtocol () const
 Return protocol of socket.
 
virtual bool isOpenSynchronous () const
 Is "open()" synchronous?
 
virtual void open (const IOEndpoint *endpoint, C &callback)
 Open Socket.
 
virtual bool processReceivedData (const void *staging, size_t length, size_t &cumulative, size_t &offset, size_t &expected, isc::util::OutputBufferPtr &buff)
 Process received data.
 

Additional Inherited Members

Detailed Description

template<typename C>
class isc::asiolink::UDPSocket< C >

The UDPSocket class is a concrete derived class of IOAsioSocket that represents a UDP socket.

Parameters
CCallback type

Definition at line 35 of file udp_socket.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename C >
anonymous enum
Enumerator
MIN_SIZE 

Definition at line 42 of file udp_socket.h.

Constructor & Destructor Documentation

◆ UDPSocket() [1/2]

template<typename C >
isc::asiolink::UDPSocket< C >::UDPSocket ( boost::asio::ip::udp::socket &  socket)

Constructor from an ASIO UDP socket.

Parameters
socketThe ASIO representation of the UDP socket. It is assumed that the caller will open and close the socket, so these operations are a no-op for that socket.

Definition at line 170 of file udp_socket.h.

◆ UDPSocket() [2/2]

template<typename C >
isc::asiolink::UDPSocket< C >::UDPSocket ( const IOServicePtr service)

Constructor.

Used when the UDPSocket is being asked to manage its own internal socket. In this case, the open() and close() methods are used.

Parameters
serviceI/O Service object used to manage the socket.

Definition at line 177 of file udp_socket.h.

◆ ~UDPSocket()

template<typename C >
isc::asiolink::UDPSocket< C >::~UDPSocket
virtual

Destructor.

Definition at line 185 of file udp_socket.h.

Member Function Documentation

◆ asyncReceive()

template<typename C >
void isc::asiolink::UDPSocket< C >::asyncReceive ( void *  data,
size_t  length,
size_t  offset,
IOEndpoint endpoint,
C &  callback 
)
virtual

Receive Asynchronously.

Calls the underlying socket's async_receive_from() method to read a packet of data from a remote endpoint. Arrival of the data is signalled via a call to the callback function.

Parameters
dataBuffer to receive incoming message
lengthLength of the data buffer
offsetOffset into buffer where data is to be put
endpointSource of the communication
callbackCallback object

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 254 of file udp_socket.h.

References isc::asiolink::UDPEndpoint::getASIOEndpoint(), isc::asiolink::IOEndpoint::getProtocol(), isc_throw, and isc_throw_assert.

+ Here is the call graph for this function:

◆ asyncSend()

template<typename C >
void isc::asiolink::UDPSocket< C >::asyncSend ( const void *  data,
size_t  length,
const IOEndpoint endpoint,
C &  callback 
)
virtual

Send Asynchronously.

Calls the underlying socket's async_send_to() method to send a packet of data asynchronously to the remote endpoint. The callback will be called on completion.

Parameters
dataData to send
lengthLength of data to send
endpointTarget of the send
callbackCallback object.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 228 of file udp_socket.h.

References isc::asiolink::UDPEndpoint::getASIOEndpoint(), isc::asiolink::IOEndpoint::getProtocol(), isc_throw, and isc_throw_assert.

+ Here is the call graph for this function:

◆ cancel()

template<typename C >
void isc::asiolink::UDPSocket< C >::cancel
virtual

Cancel I/O On Socket.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 301 of file udp_socket.h.

◆ close()

template<typename C >
void isc::asiolink::UDPSocket< C >::close
virtual

Close socket.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 311 of file udp_socket.h.

◆ getNative()

template<typename C >
virtual int isc::asiolink::UDPSocket< C >::getNative ( ) const
inlinevirtual

Return file descriptor of underlying socket.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 65 of file udp_socket.h.

◆ getProtocol()

template<typename C >
virtual int isc::asiolink::UDPSocket< C >::getProtocol ( ) const
inlinevirtual

Return protocol of socket.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 74 of file udp_socket.h.

◆ isOpenSynchronous()

template<typename C >
virtual bool isc::asiolink::UDPSocket< C >::isOpenSynchronous ( ) const
inlinevirtual

Is "open()" synchronous?

Indicates that the opening of a UDP socket is synchronous.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 81 of file udp_socket.h.

◆ open()

template<typename C >
void isc::asiolink::UDPSocket< C >::open ( const IOEndpoint endpoint,
C &  callback 
)
virtual

Open Socket.

Opens the UDP socket. This is a synchronous operation.

Parameters
endpointEndpoint to which the socket will send data. This is used to determine the address family that should be used for the underlying socket.
callbackUnused as the operation is synchronous.

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 192 of file udp_socket.h.

References isc::asiolink::IOEndpoint::getFamily().

+ Here is the call graph for this function:

◆ processReceivedData()

template<typename C >
bool isc::asiolink::UDPSocket< C >::processReceivedData ( const void *  staging,
size_t  length,
size_t &  cumulative,
size_t &  offset,
size_t &  expected,
isc::util::OutputBufferPtr buff 
)
virtual

Process received data.

See the description of IOAsioSocket::receiveComplete for a complete description of this method.

Parameters
stagingPointer to the start of the staging buffer.
lengthAmount of data in the staging buffer.
cumulativeAmount of data received before the staging buffer is processed.
offsetUnused.
expectedunused.
buffOutput buffer. Data in the staging buffer is be copied to this output buffer in the call.
Returns
Always true

Implements isc::asiolink::IOAsioSocket< C >.

Definition at line 282 of file udp_socket.h.


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