Quick Links:

bal | bbl | bdl | bsl

Public Types | Public Member Functions

balb::PipeControlChannel Class Reference

#include <balb_pipecontrolchannel.h>

List of all members.

Public Types

typedef bsl::function< void(const
bslstl::StringRef &message)> 
ControlCallback

Public Member Functions

 PipeControlChannel (const ControlCallback &callback, bslma::Allocator *basicAllocator=0)
 ~PipeControlChannel ()
int start (const char *pipeName)
template<class STRING_TYPE >
int start (const STRING_TYPE &pipeName)
int start (const char *pipeName, const bslmt::ThreadAttributes &attributes)
template<class STRING_TYPE >
int start (const STRING_TYPE &pipeName, const bslmt::ThreadAttributes &attributes)
void shutdown ()
void stop ()
const bsl::stringpipeName () const

Detailed Description

This class is a mechanism for reading control messages from a named pipe. Use start to spawn a thread that handles messages arriving at the pipe, and shutdown to stop reading. stop blocks until the processing thread has been terminated by a call to shutdown (either before stop is called, or from some other thread).

See Component balb_pipecontrolchannel


Member Typedef Documentation

This type of function is called to handle control messages received on the pipe. The message is one complete message read from the pipe, without the terminating newline character.


Constructor & Destructor Documentation

balb::PipeControlChannel::PipeControlChannel ( const ControlCallback callback,
bslma::Allocator basicAllocator = 0 
) [explicit]

Create a pipe control mechanism that dispatches messages to the specified callback. Optionally specify basicAllocator to supply memory. If basicAllocator is zero, the currently installed default allocator is used.

balb::PipeControlChannel::~PipeControlChannel (  ) 

Destroy this object. Shut down the processing thread if it is still running and block until it terminates. Close the named pipe and clean up any associated system resources.


Member Function Documentation

int balb::PipeControlChannel::start ( const char *  pipeName  ) 
template<class STRING_TYPE >
int balb::PipeControlChannel::start ( const STRING_TYPE &  pipeName  ) 
int balb::PipeControlChannel::start ( const char *  pipeName,
const bslmt::ThreadAttributes attributes 
)
template<class STRING_TYPE >
int balb::PipeControlChannel::start ( const STRING_TYPE &  pipeName,
const bslmt::ThreadAttributes attributes 
)

Open a named pipe having the specified pipeName, and start a thread to read messages and dispatch them to the callback specified at construction. Optionally specify attributes of the background processing thread. If attributes is not supplied, a default constructed ThreadAttributes object will be used. Return 0 on success, and a non-zero value otherwise. In particular, return a non-zero value if the pipe cannot be opened or if it is detected that another process is reading from the pipe. pipeName must be of the types const char *, char *, bsl::string, std::string, std::pmr::string (if supported), or bslstl::StringRef.

void balb::PipeControlChannel::shutdown (  ) 

Stop reading from the pipe and dispatching messages. If the background thread has begun processing a message, this method will block until a message that is currently being processed completes.

void balb::PipeControlChannel::stop (  ) 

Block until the background thread has been terminated by a call to shutdown. Then close the pipe and clean up the associated file.

const bsl::string& balb::PipeControlChannel::pipeName (  )  const

Return the fully qualified system name of the pipe.


Member Data Documentation

fifo descriptor (read-only)

fifo descriptor (write-only)

pipe handle


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