# ACE_SPIPE_Stream Class Reference

Defines the methods in the <ace_spipe_stream> abstraction. More...

`#include <SPIPE_Stream.h>`

Inheritance diagram for ACE_SPIPE_Stream:

[legend]
Collaboration diagram for ACE_SPIPE_Stream:

[legend]
List of all members.

## Public Types

typedef ACE_SPIPE_Addr | PEER_ADDR

## Public Member Functions

| ACE_SPIPE_Stream (void)
| Default constructor.
int | get_remote_addr (ACE_SPIPE_Addr &remote_sap) const
| Obtain the address of whom we are connected with.
int | send_handle (ACE_HANDLE handle) const
| Send an open FD to another process.
int | recv_handle (ACE_HANDLE &handle) const
| Recv an open FD from another process.
int | recv_handle (strrecvfd &recvfd) const
| Recv an open FD from another process.
ssize_t | send_n (const void *buf, size_t len) const
| Send <len> bytes, keep trying until <len> are sent.
ssize_t | recv_n (void *buf, size_t len) const
| Recv <len> bytes, keep trying until <len> are received.
ssize_t | send (const void *buf, size_t len) const
| Send bytes via STREAM pipes using "band" mode.
ssize_t | recv (void *buf, size_t len) const
| Recv bytes via STREAM pipes using "band" mode.
ssize_t | send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int flags=0) const
| Send <cntl> and <data> via STREAM pipes.
ssize_t | recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *flags) const
| Recv <cntl> and <data> via STREAM pipes.
ssize_t | send (const ACE_Str_Buf *cntl, const ACE_Str_Buf *data, int band, int flags) const
| Send bytes via STREAM pipes using "band" mode.
ssize_t | recv (ACE_Str_Buf *cntl, ACE_Str_Buf *data, int *band, int *flags) const
| Recv bytes via STREAM pipes using "band" mode.
ssize_t | send (const iovec iov[], int len) const
| Send iovecs via the OS "gather-write" operation.
ssize_t | recv (iovec iov[], int len) const
| Recv iovecs via the OS "scatter-read" operation.
ssize_t | send (size_t len,...) const
ssize_t | recv (size_t len,...) const
ssize_t | send (const void *buf, size_t len, ACE_OVERLAPPED *overlapped) const
| Send <len> bytes via Win32 <writefile> using overlapped I/O.
ssize_t | recv (void *buf, size_t len, ACE_OVERLAPPED *overlapped) const
| Recv <len> bytes via Win32 <readfile> using overlapped I/O.
ssize_t | sendv (const iovec iov[], int len) const
| Send an <iovec> of size <len> to the stream.
ssize_t | sendv_n (const iovec iov[], int len) const
ssize_t | recvv_n (iovec iov[], int len) const
| Receive an <iovec> of size <len> to the stream.
void | dump (void) const
| Dump the state of an object.

## Public Attributes

| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks.

## Private Attributes

ACE_SPIPE_Addr | remote_addr_

## Friends

class | ACE_SPIPE_Acceptor
class | ACE_SPIPE_Connector

## Detailed Description

Defines the methods in the <ace_spipe_stream> abstraction.

<buf> is the buffer to write from or receive into. <len> is the number of bytes to transfer.

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.

The return values for the "*_n()" methods match the return values from the non "_n()" methods and are specified as follows:

- The number of bytes transferred is returned.
- On error, -1 is returned, errno is set to appropriate error.
- On EOF, 0 is returned, errno is irrelevant.

Methods with <iovec> parameter are I/O vector variants of the I/O operations.

The <send> and <revc> operations use "message" semantics rather than "bytestream" semantics.

## Member Typedef Documentation

typedef ACE_SPIPE_Addr ACE_SPIPE_Stream::PEER_ADDR

## Constructor & Destructor Documentation

ACE_SPIPE_Stream::ACE_SPIPE_Stream | ( | void |  | ) |

| Default constructor.

## Member Function Documentation

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

| Dump the state of an object. Reimplemented from ACE_SPIPE.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE int ACE_SPIPE_Stream::get_remote_addr | ( | ACE_SPIPE_Addr & | remote_sap | ) | const

| Obtain the address of whom we are connected with.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv | ( | void * | buf,
|  | size_t | len,
|  | ACE_OVERLAPPED * | overlapped
| ) | const

| Recv <len> bytes via Win32 <readfile> using overlapped I/O.

ssize_t ACE_SPIPE_Stream::recv | ( | size_t | len,
|  |  | ...
| ) | const

| This is an interface to readv, that doesn't use the struct iovec explicitly. The ... can be passed as an arbitrary number of (char *ptr, int len) tuples. However, the count N is the *total* number of trailing arguments, *not* a couple of the number of tuple pairs!

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv | ( | iovec | iov[],
|  | int | len
| ) | const

| Recv iovecs via the OS "scatter-read" operation.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv | ( | ACE_Str_Buf * | cntl,
|  | ACE_Str_Buf * | data,
|  | int * | band,
|  | int * | flags
| ) | const

| Recv bytes via STREAM pipes using "band" mode.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv | ( | ACE_Str_Buf * | cntl,
|  | ACE_Str_Buf * | data,
|  | int * | flags
| ) | const

| Recv <cntl> and <data> via STREAM pipes.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv | ( | void * | buf,
|  | size_t | len
| ) | const

| Recv bytes via STREAM pipes using "band" mode.

ACE_INLINE int ACE_SPIPE_Stream::recv_handle | ( | strrecvfd & | recvfd | ) | const

| Recv an open FD from another process.

ACE_INLINE int ACE_SPIPE_Stream::recv_handle | ( | ACE_HANDLE & | handle | ) | const

| Recv an open FD from another process.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recv_n | ( | void * | buf,
|  | size_t | len
| ) | const

| Recv <len> bytes, keep trying until <len> are received.

ACE_INLINE ssize_t ACE_SPIPE_Stream::recvv_n | ( | iovec | iov[],
|  | int | len
| ) | const

| Receive an <iovec> of size <len> to the stream.

ACE_INLINE ssize_t ACE_SPIPE_Stream::send | ( | const void * | buf,
|  | size_t | len,
|  | ACE_OVERLAPPED * | overlapped
| ) | const

| Send <len> bytes via Win32 <writefile> using overlapped I/O.

ssize_t ACE_SPIPE_Stream::send | ( | size_t | len,
|  |  | ...
| ) | const

| Send N char *ptrs and int lengths. Note that the char *'s precede the ints (basically, an varargs version of writev). The count N is the *total* number of trailing arguments, *not* a couple of the number of tuple pairs!

ACE_INLINE ssize_t ACE_SPIPE_Stream::send | ( | const iovec | iov[],
|  | int | len
| ) | const

| Send iovecs via the OS "gather-write" operation.

ACE_INLINE ssize_t ACE_SPIPE_Stream::send | ( | const ACE_Str_Buf * | cntl,
|  | const ACE_Str_Buf * | data,
|  | int | band,
|  | int | flags
| ) | const

| Send bytes via STREAM pipes using "band" mode.

ACE_INLINE ssize_t ACE_SPIPE_Stream::send | ( | const ACE_Str_Buf * | cntl,
|  | const ACE_Str_Buf * | data,
|  | int | flags = `0`
| ) | const

| Send <cntl> and <data> via STREAM pipes.

ACE_INLINE ssize_t ACE_SPIPE_Stream::send | ( | const void * | buf,
|  | size_t | len
| ) | const

| Send bytes via STREAM pipes using "band" mode.

ACE_INLINE int ACE_SPIPE_Stream::send_handle | ( | ACE_HANDLE | handle | ) | const

| Send an open FD to another process.

ACE_INLINE ssize_t ACE_SPIPE_Stream::send_n | ( | const void * | buf,
|  | size_t | len
| ) | const

| Send <len> bytes, keep trying until <len> are sent.

ACE_INLINE ssize_t ACE_SPIPE_Stream::sendv | ( | const iovec | iov[],
|  | int | len
| ) | const

| Send an <iovec> of size <len> to the stream.

ACE_INLINE ssize_t ACE_SPIPE_Stream::sendv_n | ( | const iovec | iov[],
|  | int | len
| ) | const

| Send an <iovec> of size <len> to the stream. Will block until all bytes are sent or an error occurs.

## Friends And Related Function Documentation

friend class ACE_SPIPE_Acceptor`[friend]`

friend class ACE_SPIPE_Connector`[friend]`

## Member Data Documentation

ACE_SPIPE_Stream::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks. Reimplemented from ACE_SPIPE.

ACE_SPIPE_Addr ACE_SPIPE_Stream::remote_addr_`[private]`

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

- SPIPE_Stream.h
- SPIPE_Stream.cpp
- SPIPE_Stream.inl