Quick Links:

bal | bbl | bdl | bsl

Classes | Public Types | Public Member Functions | Public Attributes

balb::ControlManager Class Reference

#include <balb_controlmanager.h>

List of all members.

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 &)
ControlManageroperator= (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::Allocatord_allocator_p
Registry d_registry
bslmt::RWMutex d_registryMutex

Detailed Description

Dispatch control messages to callbacks by name.

See Component balb_controlmanager


Member Typedef Documentation

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

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.


Member Data Documentation

memory allocator (held)

registry

registry mutex


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