Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Examples  

vpr::SocketDatagramImplNSPR Class Reference

#include <SocketDatagramImplNSPR.h>

Inheritance diagram for vpr::SocketDatagramImplNSPR:

Inheritance graph
[legend]
Collaboration diagram for vpr::SocketDatagramImplNSPR:

Collaboration graph
[legend]
List of all members.

Public Types

typedef SocketImplNSPR Parent

Public Methods

 SocketDatagramImplNSPR ()
 Default constructor. More...

 SocketDatagramImplNSPR (const InetAddr &local_addr, const InetAddr &remote_addr)
 Constructor. More...

 SocketDatagramImplNSPR (const SocketDatagramImplNSPR &sock)
 Copy constructor. More...

vpr::ReturnStatus recvfrom (void *msg, const vpr::Uint32 length, const int flags, vpr::InetAddr &from, vpr::Uint32 &bytes_read, const vpr::Interval timeout=vpr::Interval::NoTimeout)
vpr::ReturnStatus sendto (const void *msg, const vpr::Uint32 length, const int flags, const vpr::InetAddr &to, vpr::Uint32 &bytes_sent, const vpr::Interval timeout=vpr::Interval::NoTimeout)

Member Typedef Documentation

typedef SocketImplNSPR vpr::SocketDatagramImplNSPR::Parent
 

Definition at line 56 of file SocketDatagramImplNSPR.h.


Constructor & Destructor Documentation

vpr::SocketDatagramImplNSPR::SocketDatagramImplNSPR   [inline]
 

Default constructor.

This does nothing.

Definition at line 65 of file SocketDatagramImplNSPR.h.

References vpr::SocketTypes::DATAGRAM.

00065                             : SocketImplNSPR(SocketTypes::DATAGRAM)
00066    {
00067       /* Do nothing. */ ;
00068    }

vpr::SocketDatagramImplNSPR::SocketDatagramImplNSPR const InetAddr   local_addr,
const InetAddr   remote_addr
[inline]
 

Constructor.

Postcondition:
The member variables are initialized with the type in particular set to vpr::SocketTypes::DATAGRAM.

Definition at line 76 of file SocketDatagramImplNSPR.h.

References vpr::SocketTypes::DATAGRAM, and vpr::InetAddr.

00078       : SocketImplNSPR(local_addr, remote_addr, SocketTypes::DATAGRAM)
00079    {
00080       /* Do nothing. */ ;
00081    }

vpr::SocketDatagramImplNSPR::SocketDatagramImplNSPR const SocketDatagramImplNSPR &    sock [inline]
 

Copy constructor.

Definition at line 84 of file SocketDatagramImplNSPR.h.

00085       : SocketImplNSPR(sock)
00086    {
00087       mLocalAddr  = sock.mLocalAddr;
00088       mRemoteAddr = sock.mRemoteAddr;
00089    }


Member Function Documentation

vpr::ReturnStatus vpr::SocketDatagramImplNSPR::recvfrom void *    msg,
const vpr::Uint32    length,
const int    flags,
vpr::InetAddr   from,
vpr::Uint32   bytes_read,
const vpr::Interval    timeout = vpr::Interval::NoTimeout
 

Definition at line 58 of file SocketDatagramImplNSPR.cpp.

References vpr::SocketImplNSPR::mHandle, vpr::NSPR_getInterval, and vpr::ReturnStatus::WouldBlock.

00064 {
00065    ReturnStatus retval;
00066    PRInt32 bytes;
00067 
00068    bytes = PR_RecvFrom(mHandle, msg, length, flags, from.getPRNetAddr(),
00069                        NSPR_getInterval(timeout));
00070 
00071    if ( bytes > 0 )
00072    {
00073       bytes_read = bytes;
00074    }
00075    else if ( bytes == -1 )
00076    {
00077       PRErrorCode err_code = PR_GetError();
00078 
00079       bytes_read = 0;
00080 
00081       if ( err_code == PR_WOULD_BLOCK_ERROR )
00082       {
00083          retval.setCode(vpr::ReturnStatus::WouldBlock);
00084       }
00085       else if ( err_code == PR_IO_TIMEOUT_ERROR )
00086       {
00087          retval.setCode(ReturnStatus::Timeout);
00088       }
00089       else
00090       {
00091          vpr::Error::outputCurrentError(std::cerr,
00092                                         "SocketDatagramImplNSPR::recvfrom: Could not read from socket");
00093          retval.setCode(ReturnStatus::Fail);
00094       }
00095    }
00096    else if ( bytes == 0 )      // Not connected
00097    {
00098       retval.setCode(ReturnStatus::NotConnected);
00099       bytes_read = bytes;
00100    }
00101 
00102    return retval;
00103 }

vpr::ReturnStatus vpr::SocketDatagramImplNSPR::sendto const void *    msg,
const vpr::Uint32    length,
const int    flags,
const vpr::InetAddr   to,
vpr::Uint32   bytes_sent,
const vpr::Interval    timeout = vpr::Interval::NoTimeout
 

Definition at line 105 of file SocketDatagramImplNSPR.cpp.

References vpr::SocketImplNSPR::mHandle, vpr::ReturnStatus::NotConnected, vpr::NSPR_getInterval, and vpr::ReturnStatus::WouldBlock.

00111 {
00112    ReturnStatus retval;
00113    PRInt32 bytes;
00114 
00115    bytes = PR_SendTo(mHandle, msg, length, flags, to.getPRNetAddr(),
00116                      NSPR_getInterval(timeout));
00117 
00118    if ( bytes == -1 )
00119    {
00120       PRErrorCode err_code = PR_GetError();
00121 
00122       bytes_sent = 0;
00123 
00124       if ( err_code == PR_WOULD_BLOCK_ERROR )
00125       {
00126          retval.setCode(vpr::ReturnStatus::WouldBlock);
00127       }
00128       else if ( err_code == PR_IO_TIMEOUT_ERROR )
00129       {
00130          retval.setCode(ReturnStatus::Timeout);
00131       }
00132       else if ( err_code == PR_NOT_CONNECTED_ERROR )
00133       {
00134          retval.setCode(vpr::ReturnStatus::NotConnected);
00135       }
00136       else
00137       {
00138          vpr::Error::outputCurrentError(std::cerr,
00139                                         "SocketDatagramImplNSPR::sendto: Could not send message");
00140          retval.setCode(ReturnStatus::Fail);
00141       }
00142    }
00143    else
00144    {
00145       bytes_sent = bytes;
00146    }
00147 
00148    return retval;
00149 }


The documentation for this class was generated from the following files:
Generated on Sun May 2 14:47:00 2004 for VR Juggler Portable Runtime by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002