#include <MCast.h>
Inheritance diagram for TAO_AV_UDP_MCast_Transport:


Public Member Functions | |
| TAO_AV_UDP_MCast_Transport (void) | |
| TAO_AV_UDP_MCast_Transport (TAO_AV_UDP_MCast_Flow_Handler *handler) | |
| virtual | ~TAO_AV_UDP_MCast_Transport (void) |
| virtual int | open (ACE_Addr *address) |
| virtual int | close (void) |
| virtual int | mtu (void) |
| Write the complete Message_Block chain to the connection. | |
| virtual ACE_Addr * | get_peer_addr (void) |
| Write the complete Message_Block chain to the connection. | |
| virtual ACE_Addr * | get_local_addr (void) |
| virtual ssize_t | send (const ACE_Message_Block *mblk, ACE_Time_Value *s=0) |
| virtual ssize_t | send (const char *buf, size_t len, ACE_Time_Value *s=0) |
| Write the contents of the buffer of length len to the connection. | |
| virtual ssize_t | send (const iovec *iov, int iovcnt, ACE_Time_Value *s=0) |
| Write the contents of iovcnt iovec's to the connection. | |
| virtual ssize_t | recv (char *buf, size_t len, ACE_Time_Value *s=0) |
| Read len bytes from into buf. | |
| virtual ssize_t | recv (char *buf, size_t len, int flags, ACE_Time_Value *s=0) |
| Read len bytes from into buf using flags. | |
| virtual ssize_t | recv (iovec *iov, int iovcnt, ACE_Time_Value *s=0) |
| Read received data into the iovec buffers. | |
Protected Attributes | |
| TAO_AV_UDP_MCast_Flow_Handler * | handler_ |
| ACE_INET_Addr | peer_addr_ |
| ACE_INET_Addr | local_addr_ |
Definition at line 32 of file MCast.h.
|
|
Definition at line 63 of file MCast.cpp.
00064 :handler_ (0) 00065 { 00066 } |
|
|
Definition at line 68 of file MCast.cpp.
00069 :handler_ (handler) 00070 { 00071 } |
|
|
Definition at line 73 of file MCast.cpp.
00074 {
00075 }
|
|
|
Implements TAO_AV_Transport. Definition at line 84 of file MCast.cpp.
00085 {
00086 return 0;
00087 }
|
|
|
Reimplemented from TAO_AV_Transport. Definition at line 97 of file MCast.cpp. References ACE_SOCK::get_local_addr(), and TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket().
00098 {
00099 this->handler_->get_mcast_socket ()->get_local_addr (this->local_addr_);
00100 return &this->local_addr_;
00101 }
|
|
|
Write the complete Message_Block chain to the connection.
Implements TAO_AV_Transport. Definition at line 91 of file MCast.cpp.
00092 {
00093 return &this->peer_addr_;
00094 }
|
|
|
Write the complete Message_Block chain to the connection.
Implements TAO_AV_Transport. Definition at line 185 of file MCast.cpp. References ACE_MAX_DGRAM_SIZE.
00186 {
00187 return ACE_MAX_DGRAM_SIZE;
00188 }
|
|
|
Implements TAO_AV_Transport. Definition at line 78 of file MCast.cpp.
00079 {
00080 return 0;
00081 }
|
|
||||||||||||||||
|
Read received data into the iovec buffers.
Implements TAO_AV_Transport. Definition at line 213 of file MCast.cpp. References TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), and ACE_SOCK_Dgram::recv().
00216 {
00217 return handler_->get_mcast_socket ()->recv (iov,this->peer_addr_,0,timeout);
00218 }
|
|
||||||||||||||||||||
|
Read len bytes from into buf using flags.
Implements TAO_AV_Transport. Definition at line 200 of file MCast.cpp. References TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), and ACE_SOCK_Dgram::recv().
00204 {
00205 return this->handler_->get_mcast_socket ()->recv (buf,
00206 len,
00207 this->peer_addr_,
00208 flags,
00209 timeout);
00210 }
|
|
||||||||||||||||
|
Read len bytes from into buf.
Implements TAO_AV_Transport. Definition at line 192 of file MCast.cpp. References TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), and ACE_SOCK_Dgram::recv().
00195 {
00196 return this->handler_->get_mcast_socket ()->recv (buf, len,this->peer_addr_);
00197 }
|
|
||||||||||||||||
|
Write the contents of iovcnt iovec's to the connection.
Implements TAO_AV_Transport. Definition at line 174 of file MCast.cpp. References TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), and ACE_SOCK_Dgram_Mcast::send().
00177 {
00178 return this->handler_->get_mcast_socket ()->send (iov,
00179 iovcnt,
00180 0);
00181
00182 }
|
|
||||||||||||||||
|
Write the contents of the buffer of length len to the connection.
Implements TAO_AV_Transport. Definition at line 160 of file MCast.cpp. References TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), and ACE_SOCK_Dgram_Mcast::send().
00163 {
00164 // if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"TAO_AV_UDP_MCast_Transport::send "));
00165 // char addr [BUFSIZ];
00166 // this->peer_addr_.addr_to_string (addr,BUFSIZ);
00167 // if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG,"to %s\n",addr));
00168
00169 return this->handler_->get_mcast_socket ()->send (buf, len);
00170
00171 }
|
|
||||||||||||
|
Implements TAO_AV_Transport. Definition at line 104 of file MCast.cpp. References ACE_IOV_MAX, ACE_Message_Block::cont(), TAO_AV_UDP_MCast_Flow_Handler::get_mcast_socket(), ACE_Message_Block::length(), ACE_Message_Block::rd_ptr(), ACE_SOCK_Dgram_Mcast::send(), and ssize_t.
00105 {
00106 // For the most part this was copied from GIOP::send_request and
00107 // friends.
00108
00109 iovec iov[ACE_IOV_MAX];
00110 int iovcnt = 0;
00111 ssize_t n = 0;
00112 ssize_t nbytes = 0;
00113
00114 for (const ACE_Message_Block *i = mblk;
00115 i != 0;
00116 i = i->cont ())
00117 {
00118 // Make sure there is something to send!
00119 if (i->length () > 0)
00120 {
00121 iov[iovcnt].iov_base = i->rd_ptr ();
00122 iov[iovcnt].iov_len = static_cast<u_long> (i->length ());
00123 iovcnt++;
00124
00125 // The buffer is full make a OS call. @@ TODO this should
00126 // be optimized on a per-platform basis, for instance, some
00127 // platforms do not implement writev() there we should copy
00128 // the data into a buffer and call send_n(). In other cases
00129 // there may be some limits on the size of the iovec, there
00130 // we should set ACE_IOV_MAX to that limit.
00131 if (iovcnt == ACE_IOV_MAX)
00132 {
00133 n = this->handler_->get_mcast_socket ()->send ((const iovec *) iov,
00134 iovcnt);
00135
00136 if (n < 1)
00137 return n;
00138
00139 nbytes += n;
00140 iovcnt = 0;
00141 }
00142 }
00143 }
00144
00145 // Check for remaining buffers to be sent!
00146 if (iovcnt != 0)
00147 {
00148 n = this->handler_->get_mcast_socket ()->send ((const iovec *) iov,
00149 iovcnt);
00150 if (n < 1)
00151 return n;
00152
00153 nbytes += n;
00154 }
00155
00156 return nbytes;
00157 }
|
|
|
|
|
|
|
|
|
|
1.3.6