ASSA::UnConUDPSocket Class Reference

#include <UnConUDPSocket.h>

Inheritance diagram for ASSA::UnConUDPSocket:

ASSA::UDPSocket ASSA::Socket List of all members.

Public Member Functions

 UnConUDPSocket ()
 Constructor.
 ~UnConUDPSocket ()
 Destructor.
int recvfrom (char *buf_, int size_, Address *peer_addr_)
 recvfrom() function receives a message from connectionless-mode socket.
int sendto (const char *buf_, const unsigned int size_, const Address *dest_addr_)
 sendto() function sends a message through connectionless-mode socket.
virtual int in_avail () const
 This function returns the number of characters immediately available in the get area of the underlying Socketbuf buffer without making a system call.

Detailed Description

Definition at line 26 of file UnConUDPSocket.h.


Constructor & Destructor Documentation

ASSA::UnConUDPSocket::UnConUDPSocket  ) 
 

Constructor.

Definition at line 70 of file UnConUDPSocket.h.

References ASSA::SOCKTRACE, and trace_with_mask.

00070                   : UDPSocket() 
00071 {
00072     trace_with_mask ("UnConUDPSocket::UnConUDPSocket", SOCKTRACE);
00073 }

ASSA::UnConUDPSocket::~UnConUDPSocket  ) 
 

Destructor.

Definition at line 76 of file UnConUDPSocket.h.

References ASSA::SOCKTRACE, and trace_with_mask.

00077 {
00078     trace_with_mask ("UnConUDPSocket::~UnConUDPSocket", SOCKTRACE);
00079 }


Member Function Documentation

virtual int ASSA::UnConUDPSocket::in_avail  )  const [inline, virtual]
 

This function returns the number of characters immediately available in the get area of the underlying Socketbuf buffer without making a system call.

Always return 0.

Implements ASSA::Socket.

Definition at line 66 of file UnConUDPSocket.h.

00066 { return 0; }

int UnConUDPSocket::recvfrom char *  buf_,
int  size_,
Address peer_addr_
 

recvfrom() function receives a message from connectionless-mode socket.

It also permits the application to retrieve the source address of received data.

Parameters:
buf_ points to buffer where the message should be stored
size_ buffer length is bytes
peer_addr_ pointer to the address structure where sending address is to be stored
Returns:
length of the peer address

Definition at line 21 of file UnConUDPSocket.cpp.

References ASSA::Address::getAddress(), ASSA::UDPSocket::getHandler(), and ASSA::Address::getLength().

00022 {
00023     // ::recvfrom() can return 0 bytes which is not 
00024     // considered an eof. Peer can advertise its address to 
00025     // the server by sending 0 bytes length message.
00026     //
00027 
00028     // char self[] = "Socket::recvfro"; trace(self);
00029 
00030     // Setting saddr_len is crucial to proper ::recvfrom() operation.
00031     // If left improprely initialized, ::recvfrom() won't fill in peer's 
00032     // address and won't report an error either. If SA ptr is passed to 
00033     // recvfrom() along with uninitialized address len (or set to 0), 
00034     // recvfrom() returns zeroed out address structure!!!
00035 
00036     int len;
00037     socklen_t pa_len = peer_addr_->getLength();
00038 
00039     SA* pa = peer_addr_->getAddress();
00040 
00041 #ifdef __CYGWIN32__
00042     len = ::recvfrom(getHandler(), buf_, size_, 0, pa, (int*)&pa_len);
00043 #else
00044     len = ::recvfrom(getHandler(), buf_, size_, 0, pa, &pa_len);
00045 #endif
00046 
00047     // Q: for UNIX domain socket, returned length will be essential to
00048     // remember and probably should be set in peer_addr_ by calling
00049     // setLength().....
00050     
00051     return len;
00052 }

int UnConUDPSocket::sendto const char *  buf_,
const unsigned int  size_,
const Address dest_addr_
 

sendto() function sends a message through connectionless-mode socket.

The message will be sent to the address specified by dest_addr_.

Parameters:
buf_ pointer to the buffer containing the message to be sent
size_ the size of the message in bytes
dest_addr_ contains destination address
Returns:
upon successful completion, number of bytes sent. Otherwise, -1.

Definition at line 56 of file UnConUDPSocket.cpp.

References ASSA::Address::getAddress(), ASSA::UDPSocket::getHandler(), and ASSA::Address::getLength().

00057 {
00058     return  ::sendto (getHandler(), buf_, size_, 0,
00059              peer_addr_->getAddress(),
00060              peer_addr_->getLength());
00061 }


The documentation for this class was generated from the following files:
Generated on Mon Dec 19 15:59:03 2005 for libassa by  doxygen 1.4.5