Public Member Functions | Protected Attributes

TAO_AV_TCP_Transport Class Reference

A transport abstraction for socket streams. Uses the ACE_SOCK_Stream to send the data. More...

#include <TCP.h>

Inheritance diagram for TAO_AV_TCP_Transport:
Inheritance graph
[legend]
Collaboration diagram for TAO_AV_TCP_Transport:
Collaboration graph
[legend]

List of all members.

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_Addrget_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_Handlerhandler_

Detailed Description

A transport abstraction for socket streams. Uses the ACE_SOCK_Stream to send the data.

Definition at line 49 of file TCP.h.


Constructor & Destructor Documentation

TAO_AV_TCP_Transport::TAO_AV_TCP_Transport ( void   ) 

Definition at line 15 of file TCP.cpp.

  :handler_ (0)
{
}

TAO_AV_TCP_Transport::TAO_AV_TCP_Transport ( TAO_AV_TCP_Flow_Handler handler  ) 

Definition at line 20 of file TCP.cpp.

  :handler_ (handler)
{
}

TAO_AV_TCP_Transport::~TAO_AV_TCP_Transport ( void   )  [virtual]

Definition at line 25 of file TCP.cpp.

{
}


Member Function Documentation

int TAO_AV_TCP_Transport::close ( void   )  [virtual]

Implements TAO_AV_Transport.

Definition at line 36 of file TCP.cpp.

{
  return 0;
}

ACE_Addr * TAO_AV_TCP_Transport::get_peer_addr ( void   )  [virtual]

Implements TAO_AV_Transport.

Definition at line 48 of file TCP.cpp.

{
  return 0;
}

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]

Implements TAO_AV_Transport.

Definition at line 30 of file TCP.cpp.

{
  return 0;
}

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.

Definition at line 126 of file TCP.cpp.

{
  return this->handler_->peer ().recv (buf, len);
}

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.

Definition at line 145 of file TCP.cpp.

{
  return handler_->peer ().recvv_n (iov, iovcnt);
}

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.

Definition at line 134 of file TCP.cpp.

{
  return this->handler_->peer ().recv (buf,
                                       len,
                                       flags);
}

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.

Definition at line 117 of file TCP.cpp.

{
  return this->handler_->peer ().sendv_n ((const iovec *) iov,
                                          iovcnt);
}

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.

Definition at line 109 of file TCP.cpp.

{
  return this->handler_->peer ().send_n (buf, len);
}


Member Data Documentation

Definition at line 98 of file TCP.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines