A transport abstraction for socket streams. Uses the ACE_SOCK_Stream to send the data. More...
#include <TCP.h>
Public Member Functions | |
TAO_AV_TCP_Transport (void) | |
TAO_AV_TCP_Transport (TAO_AV_TCP_Flow_Handler *handler) | |
virtual | ~TAO_AV_TCP_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) |
virtual ssize_t | send (const ACE_Message_Block *mblk, ACE_Time_Value *s=0) |
Write the complete Message_Block chain to the connection. | |
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_TCP_Flow_Handler * | handler_ |
A transport abstraction for socket streams. Uses the ACE_SOCK_Stream to send the data.
Definition at line 49 of file TCP.h.
TAO_AV_TCP_Transport::TAO_AV_TCP_Transport | ( | void | ) |
TAO_AV_TCP_Transport::TAO_AV_TCP_Transport | ( | TAO_AV_TCP_Flow_Handler * | handler | ) |
TAO_AV_TCP_Transport::~TAO_AV_TCP_Transport | ( | void | ) | [virtual] |
int TAO_AV_TCP_Transport::close | ( | void | ) | [virtual] |
ACE_Addr * TAO_AV_TCP_Transport::get_peer_addr | ( | void | ) | [virtual] |
int TAO_AV_TCP_Transport::mtu | ( | void | ) | [virtual] |
Write the complete Message_Block chain to the connection.
Implements TAO_AV_Transport.
Definition at line 42 of file TCP.cpp.
{
return -1;
}
int TAO_AV_TCP_Transport::open | ( | ACE_Addr * | address | ) | [virtual] |
ssize_t TAO_AV_TCP_Transport::recv | ( | char * | buf, | |
size_t | len, | |||
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Read len bytes from into buf.
Implements TAO_AV_Transport.
ssize_t TAO_AV_TCP_Transport::recv | ( | iovec * | iov, | |
int | iovcnt, | |||
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Read received data into the iovec buffers.
Implements TAO_AV_Transport.
ssize_t TAO_AV_TCP_Transport::recv | ( | char * | buf, | |
size_t | len, | |||
int | flags, | |||
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Read len bytes from into buf using flags.
Implements TAO_AV_Transport.
ssize_t TAO_AV_TCP_Transport::send | ( | const ACE_Message_Block * | mblk, | |
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Write the complete Message_Block chain to the connection.
Implements TAO_AV_Transport.
Definition at line 54 of file TCP.cpp.
{ // For the most part this was copied from GIOP::send_request and // friends. iovec iov[ACE_IOV_MAX]; int iovcnt = 0; ssize_t n = 0; ssize_t nbytes = 0; for (const ACE_Message_Block *i = mblk; i != 0; i = i->cont ()) { // Make sure there is something to send! if (i->length () > 0) { iov[iovcnt].iov_base = i->rd_ptr (); iov[iovcnt].iov_len = static_cast<u_long> (i->length ()); iovcnt++; // The buffer is full make a OS call. @@ TODO this should // be optimized on a per-platform basis, for instance, some // platforms do not implement writev() there we should copy // the data into a buffer and call send_n(). In other cases // there may be some limits on the size of the iovec, there // we should set ACE_IOV_MAX to that limit. if (iovcnt == ACE_IOV_MAX) { n = this->handler_->peer ().sendv_n ((const iovec *) iov, iovcnt); if (n < 1) return n; nbytes += n; iovcnt = 0; } } } // Check for remaining buffers to be sent! if (iovcnt != 0) { n = this->handler_->peer ().sendv_n ((const iovec *) iov, iovcnt); if (n < 1) return n; nbytes += n; } return nbytes; }
ssize_t TAO_AV_TCP_Transport::send | ( | const iovec * | iov, | |
int | iovcnt, | |||
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Write the contents of iovcnt iovec's to the connection.
Implements TAO_AV_Transport.
ssize_t TAO_AV_TCP_Transport::send | ( | const char * | buf, | |
size_t | len, | |||
ACE_Time_Value * | s = 0 | |||
) | [virtual] |
Write the contents of the buffer of length len to the connection.
Implements TAO_AV_Transport.
TAO_AV_TCP_Flow_Handler* TAO_AV_TCP_Transport::handler_ [protected] |