#include <IOStream_T.h>
Collaboration diagram for ACE_SOCK_Dgram_SC< STREAM >:
Public Member Functions | |
ACE_SOCK_Dgram_SC (void) | |
ACE_SOCK_Dgram_SC (STREAM &source, ACE_INET_Addr &dest) | |
ssize_t | send_n (char *buf, ssize_t len) |
ssize_t | recv (char *buf, ssize_t len, ACE_Time_Value *tv=0) |
ssize_t | recv (char *buf, ssize_t len, int flags, ACE_Time_Value *tv=0) |
ssize_t | recv_n (char *buf, ssize_t len, int flags=0, ACE_Time_Value *tv=0) |
int | get_remote_addr (ACE_INET_Addr &addr) const |
Protected Attributes | |
ACE_INET_Addr | peer_ |
Datagrams don't have the notion of a "peer". Each send and receive on a datagram can go to a different peer if you want. If you're using datagrams for stream activity, you probably want 'em all to go to (and come from) the same place. That's what this class is for. Here, we keep an address object so that we can remember who last sent us data. When we write back, we're then able to write back to that same address.
Definition at line 257 of file IOStream_T.h.
|
Definition at line 39 of file IOStream_T.inl.
00040 { 00041 } |
|
Definition at line 44 of file IOStream_T.inl.
00046 : STREAM (source), 00047 peer_ (dest) 00048 { 00049 } |
|
Definition at line 115 of file IOStream_T.inl.
00116 { 00117 addr = peer_; 00118 return 0; 00119 } |
|
Definition at line 67 of file IOStream_T.inl. References ACE_BIT_ENABLED, ETIME, ACE_OS::select(), ACE_Handle_Set::set_bit(), and ssize_t.
00071 { 00072 if (tv != 0) 00073 { 00074 ACE_HANDLE handle = this->get_handle (); 00075 ACE_Handle_Set handle_set; 00076 00077 handle_set.set_bit (handle); 00078 00079 switch (ACE_OS::select (int (handle) + 1, 00080 (fd_set *) handle_set, // read_fds. 00081 (fd_set *) 0, // write_fds. 00082 (fd_set *) 0, // exception_fds. 00083 tv)) 00084 { 00085 case 0: 00086 errno = ETIME; 00087 case -1: 00088 return -1; 00089 default: 00090 ; // Do the 'recv' below 00091 } 00092 } 00093 00094 int rval = STREAM::recv (buf, len, peer_, flags); 00095 #if defined (ACE_WIN32) 00096 if (rval == SOCKET_ERROR) 00097 if (::WSAGetLastError () == WSAEMSGSIZE) 00098 if (ACE_BIT_ENABLED (flags, MSG_PEEK)) 00099 rval = len; 00100 #endif /* ACE_WIN32 */ 00101 return rval < len ? rval : len; 00102 } |
|
Definition at line 59 of file IOStream_T.inl. References ssize_t. Referenced by ACE_SOCK_Dgram_SC< STREAM >::recv_n().
00062 { 00063 return recv (buf, len, 0, tv); 00064 } |
|
Definition at line 105 of file IOStream_T.inl. References ACE_SOCK_Dgram_SC< STREAM >::recv(), and ssize_t.
00109 { 00110 int rval = this->recv (buf, len, flags, tv); 00111 return rval; 00112 } |
|
Definition at line 52 of file IOStream_T.inl. References ssize_t.
00054 {
00055 return STREAM::send (buf, len, peer_);
00056 }
|
|
Definition at line 278 of file IOStream_T.h. |