#include <SocketDatagramImplNSPR.h>
Inheritance diagram for vpr::SocketDatagramImplNSPR:


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) |
|
|
Definition at line 56 of file SocketDatagramImplNSPR.h. |
|
|
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 } |
|
||||||||||||
|
Constructor.
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 } |
|
|
Copy constructor.
Definition at line 84 of file SocketDatagramImplNSPR.h.
00085 : SocketImplNSPR(sock) 00086 { 00087 mLocalAddr = sock.mLocalAddr; 00088 mRemoteAddr = sock.mRemoteAddr; 00089 } |
|
||||||||||||||||||||||||||||
|
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 }
|
|
||||||||||||||||||||||||||||
|
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 }
|
1.2.14 written by Dimitri van Heesch,
© 1997-2002