File Information
Library: Foundation
Package: Processes
Header: Poco/Pipe.h
Description
This class implements an anonymous pipe.
Pipes are a common method of inter-process communication - on Unix, pipes are the oldest form of IPC.
A pipe is a half-duplex communication channel, which means that data only flows in one direction. Pipes have a read-end and a write-end. One process writes to the pipe and another process reads the data written by its peer. Read and write operations are always synchronous. A read will block until data is available and a write will block until the reader reads the data.
The sendBytes() and readBytes() methods of Pipe are usually used through a PipeOutputStream or PipeInputStream and are not called directly.
Pipe objects have value semantics; the actual work is delegated to a reference-counted PipeImpl object.
Member Summary
Member Functions: close, operator =, readBytes, readHandle, writeBytes, writeHandle
Types
Handle
typedef PipeImpl::Handle Handle;
The read/write handle or file descriptor.
Enumerations
CloseMode
used by close()
CLOSE_READ = 0x01
Close reading end of pipe.
CLOSE_WRITE = 0x02
Close writing end of pipe.
CLOSE_BOTH = 0x03
Close both ends of pipe.
Constructors
Pipe
Pipe();
Creates the Pipe.
Throws a CreateFileException if the pipe cannot be created.
Pipe
Creates the Pipe using the PipeImpl from another one.
Destructor
~Pipe
~Pipe();
Closes and destroys the Pipe.
Member Functions
close
void close(
CloseMode mode = CLOSE_BOTH
);
Depending on the argument, closes either the reading end, the writing end, or both ends of the Pipe.
operator =
Pipe & operator = (
const Pipe & pipe
);
Releases the Pipe's PipeImpl and assigns another one.
readBytes
int readBytes(
void * buffer,
int length
);
Receives data from the pipe and stores it in buffer. Up to length bytes are received. Blocks until data becomes available.
Returns the number of bytes received, or 0 if the pipe has been closed.
Throws a ReadFileException if nothing can be read.
readHandle
Handle readHandle() const;
Returns the read handle or file descriptor for the Pipe. For internal use only.
writeBytes
int writeBytes(
const void * buffer,
int length
);
Sends the contents of the given buffer through the pipe. Blocks until the receiver is ready to read the data.
Returns the number of bytes sent.
Throws a WriteFileException if the data cannot be written.
writeHandle
Handle writeHandle() const;
Returns the write handle or file descriptor for the Pipe. For internal use only.