blocxx
BLOCXX_NAMESPACE::PosixUnnamedPipe Class Reference

#include <PosixUnnamedPipe.hpp>

Inheritance diagram for BLOCXX_NAMESPACE::PosixUnnamedPipe:
BLOCXX_NAMESPACE::UnnamedPipe BLOCXX_NAMESPACE::IOIFC BLOCXX_NAMESPACE::IntrusiveCountableBase

Public Member Functions

 PosixUnnamedPipe (EOpen doOpen=E_OPEN)
 
 PosixUnnamedPipe (AutoDescriptor inputfd, AutoDescriptor outputfd)
 If fd_in == -1, then you cannot read from this object.
 
virtual ~PosixUnnamedPipe ()
 
virtual int write (const void *data, int dataLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Write a specified number of bytes to the device that is exposing the IOIFC interface.
 
virtual int read (void *buffer, int bufferLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Read a specified number of bytes from the device that is exposing the IOIFC interface.
 
Descriptor getInputHandle () const
 
Descriptor getOutputHandle () const
 
virtual void open ()
 Open the pipe.
 
virtual int close ()
 Close the pipe.
 
virtual bool isOpen () const
 Is the pipe open or closed?
 
virtual int closeInputHandle ()
 
virtual int closeOutputHandle ()
 
virtual void setBlocking (EBlockingMode outputIsBlocking=E_BLOCKING)
 Set the pipe's blocking mode.
 
virtual void setWriteBlocking (EBlockingMode isBlocking=E_BLOCKING)
 Set blocking mode for writing to pipe.
 
virtual void setReadBlocking (EBlockingMode isBlocking=E_BLOCKING)
 Set blocking mode for reading from pipe.
 
virtual EBlockingMode getReadBlocking () const
 Get the current blocking mode for reading from pipe.
 
virtual EBlockingMode getWriteBlocking () const
 Get the current blocking mode for writing from pipe.
 
virtual Select_t getReadSelectObj () const
 Get the read select object.
 
virtual Select_t getWriteSelectObj () const
 Get the write select object.
 
virtual Descriptor getInputDescriptor () const
 Get the underlying input descriptor.
 
virtual Descriptor getOutputDescriptor () const
 Get the underlying output descriptor.
 
virtual void passDescriptor (Descriptor h, const UnnamedPipeRef &ackPipe=0, const ProcessRef &targetProcess=0)
 Sends a Descriptor to the peer.
 
virtual AutoDescriptor receiveDescriptor (const UnnamedPipeRef &ackPipe)
 Gets a Descriptor from the peer.
 
- Public Member Functions inherited from BLOCXX_NAMESPACE::UnnamedPipe
virtual ~UnnamedPipe ()
 
int writeInt (int value)
 Write an int (native binary representation) to the pipe.
 
int writeString (const String &strData)
 Writes a String to the pipe.
 
int readInt (int *value)
 Reads an int (native binary representation) from the pipe.
 
int readString (String &strData)
 Reads a String from the pipe.
 
void setReadTimeout (const Timeout &timeout)
 Sets the read timeout value.
 
BLOCXX_DEPRECATED void setReadTimeout (int seconds)
 
Timeout getReadTimeout ()
 Gets the read timeout value.
 
void setWriteTimeout (const Timeout &timeout)
 Sets the write timeout value.
 
BLOCXX_DEPRECATED void setWriteTimeout (int seconds)
 
Timeout getWriteTimeout ()
 Gets the write timeout value.
 
void setTimeouts (const Timeout &timeout)
 Sets the read & write timeout values.
 
BLOCXX_DEPRECATED void setTimeouts (int seconds)
 
String readAll ()
 Read from the pipe and collect into a string, until the other end of the pipe is closed.
 
- Public Member Functions inherited from BLOCXX_NAMESPACE::IOIFC
virtual ~IOIFC ()
 

Private Member Functions

 PosixUnnamedPipe (const PosixUnnamedPipe &x)
 
PosixUnnamedPipeoperator= (const PosixUnnamedPipe &x)
 

Private Attributes

Descriptor m_fds [2]
 
EBlockingMode m_blocking [2]
 

Additional Inherited Members

- Public Types inherited from BLOCXX_NAMESPACE::UnnamedPipe
enum  EBlockingMode { E_NONBLOCKING , E_BLOCKING }
 
enum  EOpen { E_DONT_OPEN , E_OPEN }
 
- Public Types inherited from BLOCXX_NAMESPACE::IOIFC
enum  ErrorAction { E_THROW_ON_ERROR , E_RETURN_ON_ERROR }
 
- Static Public Member Functions inherited from BLOCXX_NAMESPACE::UnnamedPipe
static UnnamedPipeRef createUnnamedPipe (EOpen doOpen=E_OPEN)
 Create an instance of the concrete class that implements the UnnamedPipe interface.
 
static UnnamedPipeRef createUnnamedPipeFromDescriptor (AutoDescriptor inputAndOutput)
 Create an instance of the concrete class that implements the UnnamedPipe interface connected bidirectionally to the specified descriptor.
 
static UnnamedPipeRef createUnnamedPipeFromDescriptor (AutoDescriptor input, AutoDescriptor output)
 Create an instance of the concrete class that implements the UnnamedPipe interface connected to the specified descriptors.
 
static void createConnectedPipes (UnnamedPipeRef &first, UnnamedPipeRef &second)
 Create a connected pair of pipes.
 
static UnnamedPipeRef createStdin ()
 Create an instance of the concrete class that implements the UnnamedPipe interface connected to stdin.
 
static UnnamedPipeRef createStdout ()
 Create an instance of the concrete class that implements the UnnamedPipe interface connected to stdout.
 
static UnnamedPipeRef createStdinStdout ()
 Create an instance of the concrete class that implements the UnnamedPipe interface connected to stdin and stdout.
 
static UnnamedPipeRef createStderr ()
 Create an instance of the concrete class that implements the UnnamedPipe interface connected to stderr.
 
- Static Public Attributes inherited from BLOCXX_NAMESPACE::UnnamedPipe
static const int INFINITE_TIMEOUT = -1
 
- Protected Member Functions inherited from BLOCXX_NAMESPACE::UnnamedPipe
 UnnamedPipe ()
 
- Protected Member Functions inherited from BLOCXX_NAMESPACE::IntrusiveCountableBase
 IntrusiveCountableBase ()
 
 IntrusiveCountableBase (const IntrusiveCountableBase &)
 
IntrusiveCountableBaseoperator= (const IntrusiveCountableBase &)
 
virtual ~IntrusiveCountableBase ()
 

Detailed Description

Definition at line 50 of file PosixUnnamedPipe.hpp.

Constructor & Destructor Documentation

◆ PosixUnnamedPipe() [1/3]

◆ PosixUnnamedPipe() [2/3]

BLOCXX_NAMESPACE::PosixUnnamedPipe::PosixUnnamedPipe ( AutoDescriptor inputfd,
AutoDescriptor outputfd )

◆ ~PosixUnnamedPipe()

BLOCXX_NAMESPACE::PosixUnnamedPipe::~PosixUnnamedPipe ( )
virtual

Definition at line 375 of file PosixUnnamedPipe.cpp.

References close().

◆ PosixUnnamedPipe() [3/3]

BLOCXX_NAMESPACE::PosixUnnamedPipe::PosixUnnamedPipe ( const PosixUnnamedPipe & x)
private

Member Function Documentation

◆ close()

int BLOCXX_NAMESPACE::PosixUnnamedPipe::close ( )
virtual

Close the pipe.

Returns
-1 on error, 0 on success.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 462 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, and m_fds.

Referenced by open(), and ~PosixUnnamedPipe().

◆ closeInputHandle()

int BLOCXX_NAMESPACE::PosixUnnamedPipe::closeInputHandle ( )
virtual

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 496 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, and m_fds.

Referenced by read().

◆ closeOutputHandle()

int BLOCXX_NAMESPACE::PosixUnnamedPipe::closeOutputHandle ( )
virtual

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 511 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, and m_fds.

◆ getInputDescriptor()

Descriptor BLOCXX_NAMESPACE::PosixUnnamedPipe::getInputDescriptor ( ) const
virtual

Get the underlying input descriptor.

The UnnamedPipe instance retains ownership of the descriptor.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 738 of file PosixUnnamedPipe.cpp.

References m_fds.

◆ getInputHandle()

Descriptor BLOCXX_NAMESPACE::PosixUnnamedPipe::getInputHandle ( ) const
inline

◆ getOutputDescriptor()

Descriptor BLOCXX_NAMESPACE::PosixUnnamedPipe::getOutputDescriptor ( ) const
virtual

Get the underlying output descriptor.

The UnnamedPipe instance retains ownership of the descriptor.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 745 of file PosixUnnamedPipe.cpp.

References m_fds.

◆ getOutputHandle()

Descriptor BLOCXX_NAMESPACE::PosixUnnamedPipe::getOutputHandle ( ) const
inline

◆ getReadBlocking()

EBlockingMode BLOCXX_NAMESPACE::PosixUnnamedPipe::getReadBlocking ( ) const
virtual

Get the current blocking mode for reading from pipe.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 752 of file PosixUnnamedPipe.cpp.

References m_blocking.

◆ getReadSelectObj()

Select_t BLOCXX_NAMESPACE::PosixUnnamedPipe::getReadSelectObj ( ) const
virtual

Get the read select object.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 614 of file PosixUnnamedPipe.cpp.

References m_fds.

◆ getWriteBlocking()

EBlockingMode BLOCXX_NAMESPACE::PosixUnnamedPipe::getWriteBlocking ( ) const
virtual

Get the current blocking mode for writing from pipe.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 759 of file PosixUnnamedPipe.cpp.

References m_blocking.

◆ getWriteSelectObj()

Select_t BLOCXX_NAMESPACE::PosixUnnamedPipe::getWriteSelectObj ( ) const
virtual

Get the write select object.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 621 of file PosixUnnamedPipe.cpp.

References m_fds.

◆ isOpen()

bool BLOCXX_NAMESPACE::PosixUnnamedPipe::isOpen ( ) const
virtual

Is the pipe open or closed?

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 489 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, and m_fds.

◆ open()

void BLOCXX_NAMESPACE::PosixUnnamedPipe::open ( )
virtual

Open the pipe.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 436 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, BLOCXX_THROW_ERRNO_MSG, close(), and m_fds.

Referenced by PosixUnnamedPipe().

◆ operator=()

PosixUnnamedPipe & BLOCXX_NAMESPACE::PosixUnnamedPipe::operator= ( const PosixUnnamedPipe & x)
private

◆ passDescriptor()

◆ read()

int BLOCXX_NAMESPACE::PosixUnnamedPipe::read ( void * dataIn,
int dataInLen,
ErrorAction errorAsException = E_RETURN_ON_ERROR )
virtual

Read a specified number of bytes from the device that is exposing the IOIFC interface.

Parameters
dataInA pointer to a location in memory to put the bytes that have been read.
dataInLenThe number of bytes being requested from the device.
errorAsExceptionIf true and an error occurs durring the read operation, then throw an exception.
Exceptions
Anexception will be thrown upon an error condition if errorAsException is true.
Returns
The number of bytes actually read from the device, or -1 on error. If the device is set to nonblocking and no input is available, -1 will be returned and errno will be set to ETIMEDOUT

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 567 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, BLOCXX_THROW, BLOCXX_THROW_ERRNO_MSG, closeInputHandle(), BLOCXX_NAMESPACE::UnnamedPipe::E_BLOCKING, BLOCXX_NAMESPACE::IOIFC::E_THROW_ON_ERROR, BLOCXX_NAMESPACE::SocketFlags::E_WAIT_FOR_INPUT, ETIMEDOUT, BLOCXX_NAMESPACE::UnnamedPipe::getReadTimeout(), m_blocking, m_fds, and BLOCXX_NAMESPACE::SocketUtils::waitForIO().

◆ receiveDescriptor()

◆ setBlocking()

void BLOCXX_NAMESPACE::PosixUnnamedPipe::setBlocking ( EBlockingMode isBlocking = E_BLOCKING)
virtual

Set the pipe's blocking mode.

Precondition: The pipe is open.

Parameters
isBlockingnew blocking mode.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 410 of file PosixUnnamedPipe.cpp.

References BLOCXX_ASSERT, BLOCXX_INVALID_HANDLE, i, m_blocking, and m_fds.

Referenced by PosixUnnamedPipe(), and PosixUnnamedPipe().

◆ setReadBlocking()

void BLOCXX_NAMESPACE::PosixUnnamedPipe::setReadBlocking ( EBlockingMode isBlocking = E_BLOCKING)
virtual

Set blocking mode for reading from pipe.

Precondition: The pipe input is open.

Parameters
isBlockingnew read blocking mode.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 430 of file PosixUnnamedPipe.cpp.

References m_blocking, and m_fds.

◆ setWriteBlocking()

void BLOCXX_NAMESPACE::PosixUnnamedPipe::setWriteBlocking ( EBlockingMode isBlocking = E_BLOCKING)
virtual

Set blocking mode for writing to pipe.

Precondition: The pipe output is open.

Parameters
isBlockingnew write blocking mode.

Implements BLOCXX_NAMESPACE::UnnamedPipe.

Definition at line 424 of file PosixUnnamedPipe.cpp.

References m_blocking, and m_fds.

◆ write()

int BLOCXX_NAMESPACE::PosixUnnamedPipe::write ( const void * dataOut,
int dataOutLen,
ErrorAction errorAsException = E_RETURN_ON_ERROR )
virtual

Write a specified number of bytes to the device that is exposing the IOIFC interface.

Parameters
dataOutA pointer to a location in memory that contains the bytes that will be written to the device.
dataOutLenThe length of the data pointed to by the dataOut param.
errorAsExceptionIf true and an error occurs durring the write operation, then throw an exception.
Exceptions
Anexception will be thrown upon an error condition if errorAsException is true.
Returns
The number of bytes actually written to the device. or -1 on error. If the device is set to nonblocking and the write would block, -1 will be returned and errno will be set to ETIMEDOUT.

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 526 of file PosixUnnamedPipe.cpp.

References BLOCXX_INVALID_HANDLE, BLOCXX_THROW, BLOCXX_THROW_ERRNO_MSG, BLOCXX_NAMESPACE::UnnamedPipe::E_BLOCKING, BLOCXX_NAMESPACE::IOIFC::E_THROW_ON_ERROR, BLOCXX_NAMESPACE::SocketFlags::E_WAIT_FOR_OUTPUT, ETIMEDOUT, BLOCXX_NAMESPACE::UnnamedPipe::getWriteTimeout(), m_blocking, m_fds, and BLOCXX_NAMESPACE::SocketUtils::waitForIO().

Member Data Documentation

◆ m_blocking

EBlockingMode BLOCXX_NAMESPACE::PosixUnnamedPipe::m_blocking[2]
private

◆ m_fds


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