#include <balb_pipetaskmanager.h>
This class provides a mechanism route messages received on a named pipe to the registered handler (functor).
See balb_pipetaskmanager
◆ PipeTaskManager() [1/2]
Create a task manager having no message handlers. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. Message handlers can be supplied using the return value of the controlManager
method. If that return value is used to create other PipeTaskManager
objects, this object (the owner of the internal ControlManager
must outlive those other objects. The start
method must be called successfully before messages will be received (on a separate thread created by start
). Note that the name of the message pipe is supplied as an argument to start
.
◆ PipeTaskManager() [2/2]
Create a task manager that uses the handlers of the specified shared controlManager
. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. The start
method must be called successfully before messages will be received (on a separate thread created by start
). Note that the name of the message pipe is supplied as an argument to start
. Also note that the handlers of controlManager
can be manipulated via the return value of the controlManager
method. Finally note that the allocator of controlManger
need not equal basicAllocator
.
◆ ~PipeTaskManager()
balb::PipeTaskManager::~PipeTaskManager |
( |
| ) |
|
Shutdown message handling, and release the shared reference to the controlManager
(destroying the ConstrolManager
and its message handlers if this is the last shared reference), and destroy this object.
◆ allocator()
Return the allocator used by this object to supply memory. Note that if no allocator was supplied at construction the default allocator in effect at construction is used.
◆ BSLMF_NESTED_TRAIT_DECLARATION()
◆ controlManager() [1/2]
◆ controlManager() [2/2]
◆ pipeName()
const bsl::string & balb::PipeTaskManager::pipeName |
( |
| ) |
const |
|
inline |
Return the path of the named pipe used by the implementation. The behavior is undefined unless the task manager has been started.
◆ shutdown()
void balb::PipeTaskManager::shutdown |
( |
| ) |
|
|
inline |
Stop processing incoming messages by the background thread. If a handler is executing at the time of invocation, that handler is allowed to complete. This method does not block the caller, and the background thread persists until it is joined by a call to stop
. Note that shutdown
and stop
are typically called in succession.
◆ start()
Create a named pipe using the specified pipeBasename
(not a pathname), and execute the task manager event processor in a background thread. Return 0 on success, and a non-zero value otherwise. See {Requirements for the Named Pipe} for expectations for pipeBasename
. After a successful return, calls to start
fail until stop
has been called (successfully); afterwards, start
can be called again with the same or some other pipeBasename
. Note that the pipeName()
method provides the (full) pathname to the created named pipe.
◆ stop()
int balb::PipeTaskManager::stop |
( |
| ) |
|
|
inline |
Block until the background processing thread has shutdown (which must be initiated by a separate call to shutdown
) then join the background thread, remove the named pipe, and return. Return 0 on success, and a non-zero value otherwise. If shutdown
has not been called, this method will block indefinitely until another thread calls shutdown
. Once stop
has returned, start
can be called again with the same or a different named pipe. Note that frequently user code will call shutdown
and then immediately call stop
on a TaskManager
object.
The documentation for this class was generated from the following file: