Quick Links: |
#include <balb_controlmanager.h>
Classes | |
struct | CaselessLessThan |
class | ControlManager_Entry |
Public Types | |
typedef bsl::function< void(const bsl::string &prefix, bsl::istream &stream)> | ControlHandler |
typedef bsl::map< bsl::string, ControlManager_Entry, CaselessLessThan > | Registry |
Public Member Functions | |
ControlManager (const ControlManager &) | |
ControlManager & | operator= (const ControlManager &) |
BSLMF_NESTED_TRAIT_DECLARATION (ControlManager, bslma::UsesBslmaAllocator) | |
ControlManager (bslma::Allocator *basicAllocator=0) | |
~ControlManager () | |
int | registerHandler (const bsl::string_view &prefix, const bsl::string_view &arguments, const bsl::string_view &description, const ControlHandler &handler) |
int | deregisterHandler (const bsl::string_view &prefix) |
int | dispatchMessage (const bsl::string_view &message) const |
int | dispatchMessage (const bsl::string &prefix, bsl::istream &stream) const |
void | printUsage (bsl::ostream &stream, const bsl::string_view &preamble) const |
void | printUsageHelper (bsl::ostream *stream, const bsl::string_view &preamble) const |
Public Attributes | |
bslma::Allocator * | d_allocator_p |
Registry | d_registry |
bslmt::RWMutex | d_registryMutex |
Dispatch control messages to callbacks by name.
See Component balb_controlmanager
typedef bsl::function<void(const bsl::string& prefix, bsl::istream& stream)> balb::ControlManager::ControlHandler |
Defines a type alias for the function called to handle control messages. The prefix
argument is the first space-delimited word read from the message, and the stream
argument is the bsl::istream
containing the remainder of the message.
typedef bsl::map<bsl::string, ControlManager_Entry, CaselessLessThan> balb::ControlManager::Registry |
balb::ControlManager::ControlManager | ( | const ControlManager & | ) |
= deleted
balb::ControlManager::ControlManager | ( | bslma::Allocator * | basicAllocator = 0 |
) | [explicit] |
Create a control manager object. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used.
balb::ControlManager::~ControlManager | ( | ) |
Destroy this object.
ControlManager& balb::ControlManager::operator= | ( | const ControlManager & | ) |
= deletd
balb::ControlManager::BSLMF_NESTED_TRAIT_DECLARATION | ( | ControlManager | , | |
bslma::UsesBslmaAllocator | ||||
) |
int balb::ControlManager::registerHandler | ( | const bsl::string_view & | prefix, | |
const bsl::string_view & | arguments, | |||
const bsl::string_view & | description, | |||
const ControlHandler & | handler | |||
) |
Register the specified handler
to be invoked whenever a control message having the specified case-insensitive prefix
is received for this control manager. Also register the specified arguments
string to describe the arguments accepted by the message, and the specified description
to describe its operation; these are printed by printUsage
. Return a positive value if an existing callback was replaced, return 0 if no replacement occurred, and return a negative value otherwise.
int balb::ControlManager::deregisterHandler | ( | const bsl::string_view & | prefix | ) |
Deregister the callback function previously registered to handle the specified prefix
. Return 0 on success or a non-zero value otherwise.
int balb::ControlManager::dispatchMessage | ( | const bsl::string_view & | message | ) | const |
Parse the specified complete message
and dispatch it. Return 0 on success, and a non-zero value otherwise; in particular return non-zero if no registered callback could be found for the case-insensitive prefix in message
.
int balb::ControlManager::dispatchMessage | ( | const bsl::string & | prefix, | |
bsl::istream & | stream | |||
) | const |
Dispatch the message contained in the specified stream
to the callback associated with the specified prefix
. Return 0 on success, and a non-zero value otherwise; in particular return non-zero if no registered callback could be found for the case-insensitive prefix
.
void balb::ControlManager::printUsage | ( | bsl::ostream & | stream, | |
const bsl::string_view & | preamble | |||
) | const |
Print to the specified stream
the specified preamble
text, followed by the registered commands and documentation for this control manager. Note that a newline is appended to preamble
in the output.
void balb::ControlManager::printUsageHelper | ( | bsl::ostream * | stream, | |
const bsl::string_view & | preamble | |||
) | const |
Invoke printUsage
passing the specified *stream
and preamble
. Suitable for binding using the bdlf::BindUtil package.
memory allocator (held)
registry
registry mutex