# ACE_SOCK_Stream Class Reference

Defines the methods in the ACE_SOCK_Stream abstraction. More...

`#include <SOCK_Stream.h>`

Inheritance diagram for ACE_SOCK_Stream:

[legend]
Collaboration diagram for ACE_SOCK_Stream:

[legend]
List of all members.

## Public Types

typedef ACE_INET_Addr | PEER_ADDR

## Public Member Functions

| ACE_SOCK_Stream (void)
| Constructor.
| ACE_SOCK_Stream (ACE_HANDLE h)
| Constructor (sets the underlying ACE_HANDLE with h).
| ~ACE_SOCK_Stream (void)
| Destructor.
ssize_t | recv_n (void *buf, size_t len, int flags, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Try to recv exactly len bytes into buf from the connected socket.
ssize_t | recv_n (void *buf, size_t len, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Try to recv exactly len bytes into buf from the connected socket.
ssize_t | recvv_n (iovec iov[], int iovcnt, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Receive an `iovec` of size iovcnt from the connected socket.
ssize_t | send_n (const void *buf, size_t len, int flags, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Try to send exactly len bytes from buf>to the connection socket.
ssize_t | send_n (const void *buf, size_t len, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Try to send exactly len bytes from buf to the connected socket.
ssize_t | send_n (const ACE_Message_Block *message_block, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
ssize_t | sendv_n (const iovec iov[], int iovcnt, const ACE_Time_Value *timeout=0, size_t *bytes_transferred=0) const
| Send an `iovec` of size iovcnt to the connected socket.
ssize_t | send_urg (const void *ptr, size_t len=sizeof(char), const ACE_Time_Value *timeout=0) const
ssize_t | recv_urg (void *ptr, size_t len=sizeof(char), const ACE_Time_Value *timeout=0) const
int | close_reader (void)
| Close down the reader.
int | close_writer (void)
| Close down the writer.
int | close (void)
void | dump (void) const
| Dump the state of an object.

## Public Attributes

| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks.

## Detailed Description

Defines the methods in the ACE_SOCK_Stream abstraction.

This adds additional wrapper methods atop the ACE_SOCK_IO class.

<buf> is the buffer to write from or receive into. <len> is the number of bytes to transfer. The <timeout> parameter in the following methods indicates how long to blocking trying to transfer data. If <timeout> == 0, then the call behaves as a normal send/recv call, i.e., for blocking sockets, the call will block until action is possible; for non-blocking sockets, EWOULDBLOCK will be returned if no action is immediately possible. If <timeout> != 0, the call will wait for data to arrive no longer than the relative time specified in *<timeout>. The "_n()" I/O methods keep looping until all the data has been transferred. These methods also work for sockets in non-blocking mode i.e., they keep looping on EWOULDBLOCK. <timeout> is used to make sure we keep making progress, i.e., the same timeout value is used for every I/O operation in the loop and the timeout is not counted down. The return values for the "*_n()" methods match the return values from the non "_n()" methods and are specified as follows:

- On complete transfer, the number of bytes transferred is returned.
- On timeout, -1 is returned, errno == ETIME.
- On error, -1 is returned, errno is set to appropriate error.
- On EOF, 0 is returned, errno is irrelevant.

On partial transfers, i.e., if any data is transferred before timeout/error/EOF, <bytes_transferred> will contain the number of bytes transferred. Methods with <iovec> parameter are I/O vector variants of the I/O operations. Methods with the extra <flags> argument will always result in <send> getting called. Methods without the extra <flags> argument will result in <send> getting called on Win32 platforms, and <write> getting called on non-Win32 platforms.

## Member Typedef Documentation

typedef ACE_INET_Addr ACE_SOCK_Stream::PEER_ADDR

| Reimplemented in ACE_LSOCK_Stream.

## Constructor & Destructor Documentation

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_SOCK_Stream::ACE_SOCK_Stream | ( | void |  | ) |

| Constructor.

ACE_INLINE ACE_SOCK_Stream::ACE_SOCK_Stream | ( | ACE_HANDLE | h | ) |

| Constructor (sets the underlying ACE_HANDLE with h).

ACE_INLINE ACE_SOCK_Stream::~ACE_SOCK_Stream | ( | void |  | ) |

| Destructor.

## Member Function Documentation

int ACE_SOCK_Stream::close | ( | void |  | ) |

| Close down the socket (we need this to make things work correctly on Win32, which requires use to do a close_writer() before doing the close to avoid losing data). Reimplemented from ACE_SOCK.

ACE_INLINE int ACE_SOCK_Stream::close_reader | ( | void |  | ) |

| Close down the reader.

ACE_INLINE int ACE_SOCK_Stream::close_writer | ( | void |  | ) |

| Close down the writer.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_SOCK_Stream::dump | ( | void |  | ) | const

| Dump the state of an object. Reimplemented from ACE_SOCK_IO. Reimplemented in ACE_LSOCK_Stream.

ACE_INLINE ssize_t ACE_SOCK_Stream::recv_n | ( | void * | buf,
|  | size_t | len,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Try to recv exactly len bytes into buf from the connected socket.

ACE_INLINE ssize_t ACE_SOCK_Stream::recv_n | ( | void * | buf,
|  | size_t | len,
|  | int | flags,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Try to recv exactly len bytes into buf from the connected socket.

ACE_INLINE ssize_t ACE_SOCK_Stream::recv_urg | ( | void * | ptr,
|  | size_t | len = `sizeof(char)`,
|  | const ACE_Time_Value * | timeout = `0`
| ) | const

ACE_INLINE ssize_t ACE_SOCK_Stream::recvv_n | ( | iovec | iov[],
|  | int | iovcnt,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Receive an `iovec` of size iovcnt from the connected socket.

ACE_INLINE ssize_t ACE_SOCK_Stream::send_n | ( | const ACE_Message_Block * | message_block,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Send all the `message_block's` chained through their `next` and `cont` pointers. This call uses the underlying OS gather-write operation to reduce the domain-crossing penalty.

ACE_INLINE ssize_t ACE_SOCK_Stream::send_n | ( | const void * | buf,
|  | size_t | len,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Try to send exactly len bytes from buf to the connected socket.

ACE_INLINE ssize_t ACE_SOCK_Stream::send_n | ( | const void * | buf,
|  | size_t | len,
|  | int | flags,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Try to send exactly len bytes from buf>to the connection socket.

ACE_INLINE ssize_t ACE_SOCK_Stream::send_urg | ( | const void * | ptr,
|  | size_t | len = `sizeof(char)`,
|  | const ACE_Time_Value * | timeout = `0`
| ) | const

ACE_INLINE ssize_t ACE_SOCK_Stream::sendv_n | ( | const iovec | iov[],
|  | int | iovcnt,
|  | const ACE_Time_Value * | timeout = `0`,
|  | size_t * | bytes_transferred = `0`
| ) | const

| Send an `iovec` of size iovcnt to the connected socket.

## Member Data Documentation

ACE_SOCK_Stream::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks. Reimplemented from ACE_SOCK_IO. Reimplemented in ACE_LSOCK_Stream.

The documentation for this class was generated from the following files:

- SOCK_Stream.h
- SOCK_Stream.cpp
- SOCK_Stream.inl