# ACE_FIFO_Recv_Msg Class Reference

Receiver side for the record oriented C++ wrapper for UNIX FIFOs. More...

`#include <FIFO_Recv_Msg.h>`

Inheritance diagram for ACE_FIFO_Recv_Msg:

[legend]
Collaboration diagram for ACE_FIFO_Recv_Msg:

[legend]
List of all members.

## Public Member Functions

| ACE_FIFO_Recv_Msg (void)
| Default constructor.
| ACE_FIFO_Recv_Msg (const ACE_TCHAR *rendezvous, int flags=O_CREAT|O_RDONLY, int perms=ACE_DEFAULT_FILE_PERMS, int persistent=1, LPSECURITY_ATTRIBUTES sa=0)
| Open up a record-oriented named pipe for reading.
int | open (const ACE_TCHAR *rendezvous, int flags=O_CREAT|O_RDONLY, int perms=ACE_DEFAULT_FILE_PERMS, int persistent=1, LPSECURITY_ATTRIBUTES sa=0)
| Open up a record-oriented named pipe for reading.
ssize_t | recv (ACE_Str_Buf &msg)
| Receive a message based on attributes in an ACE_Str_Buf.
ssize_t | recv (void *buf, size_t len)
| Receive a message based on buffer pointer and maximum size.
void | dump (void) const
| Dump the state of an object.

## Public Attributes

| ACE_ALLOC_HOOK_DECLARE
| Declare the dynamic allocation hooks.

## Detailed Description

Receiver side for the record oriented C++ wrapper for UNIX FIFOs.

This method works slightly differently on platforms with the `ACE_HAS_STREAM_PIPES` configuration setting than those without. With ACE_HAS_STREAM_PIPES, the `getmsg()` system function is used and it preserves message boundaries internally. Without `ACE_HAS_STREAM_PIPES`, the message boundaries are emulated by this class and ACE_FIFO_Send_Msg cooperating. The sending class first writes an integer number of bytes in the message, then the message. ACE_FIFO_Recv_Msg reads the count, then the data. The operational differences occur primarily when a message is larger than what a caller of this class requests. See recv() for details.

## Constructor & Destructor Documentation

ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg | ( | void |  | ) |

| Default constructor.

ACE_FIFO_Recv_Msg::ACE_FIFO_Recv_Msg | ( | const ACE_TCHAR * | rendezvous,
|  | int | flags = `O_CREAT|O_RDONLY`,
|  | int | perms = `ACE_DEFAULT_FILE_PERMS`,
|  | int | persistent = `1`,
|  | LPSECURITY_ATTRIBUTES | sa = `0`
| ) |

| Open up a record-oriented named pipe for reading.

## Member Function Documentation

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

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

int ACE_FIFO_Recv_Msg::open | ( | const ACE_TCHAR * | rendezvous,
|  | int | flags = `O_CREAT|O_RDONLY`,
|  | int | perms = `ACE_DEFAULT_FILE_PERMS`,
|  | int | persistent = `1`,
|  | LPSECURITY_ATTRIBUTES | sa = `0`
| ) |

| Open up a record-oriented named pipe for reading. Reimplemented from ACE_FIFO_Recv.

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

Receive a message based on buffer pointer and maximum size.

Parameters:

  | buf | Pointer to the memory to receive the data.
  | len | The maximum number of bytes to receive.

Return values:

  | -1 | Error; consult `errno` for specific error number.

Returns:
  The number of bytes received in the message. For messages that are larger than the requested maximum size, the behavior is different depending on the `ACE_HAS_STREAM_PIPES` configuration setting. With `ACE_HAS_STREAM_PIPES`, the return value will be the same as
  - len (this is also possible if the message is exactly the same length as
  - len, and the two cases are indistinguishable). Without `ACE_HAS_STREAM_PIPES`, the return value is the total length of the message, including bytes in excess of
  - len. The excess bytes are discarded.

Reimplemented from ACE_FIFO_Recv.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ssize_t ACE_FIFO_Recv_Msg::recv | ( | ACE_Str_Buf & | msg | ) |

Receive a message based on attributes in an ACE_Str_Buf.

Parameters:

  | msg | Reference to an ACE_Str_Buf whose `buf` member points to the memory to receive the data and `maxlen` member contains the maximum number of bytes to receive. On return after successfully reading data, the `len` member contains the number of bytes received and placed in the buffer pointed to by `msg.buf`.

Return values:

  | -1 | Error; consult `errno` for specific error number.

Returns:
  If the `ACE_HAS_STREAM_PIPES` configuration setting is defined, the return value is the number of bytes received in the message and will be the same as `buf.len`. The return value from the `getmsg()` system function is discarded. If `ACE_HAS_STREAM_PIPES` is not defined, the number of bytes in the message read from the FIFO is returned. If the message is larger than the maximum length requested in `msg.maxlen`, the return value reflects the entire message length, and the `msg.len` member reflects how many bytes were actually placed in the caller's buffer. Any part of the message longer than `msg.maxlen` is discarded.

## Member Data Documentation

ACE_FIFO_Recv_Msg::ACE_ALLOC_HOOK_DECLARE

| Declare the dynamic allocation hooks. Reimplemented from ACE_FIFO_Recv.

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

- FIFO_Recv_Msg.h
- FIFO_Recv_Msg.cpp
- FIFO_Recv_Msg.inl