class MessageDispatcher

A message dispatching hub. More...

Full nameTelEngine::MessageDispatcher
Definition#include <yatengine.h>
InheritsTelEngine::GenObject [public ], TelEngine::Mutex [public ]
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Public Methods

Protected Methods


Detailed Description

The dispatcher class is a hub that holds a list of handlers to be called for the messages that pass trough the hub. It can also handle a queue of messages that are typically dispatched by a separate thread.

 MessageDispatcher (const char* trackParam = 0)

MessageDispatcher

Creates a new message dispatcher.

Parameters:
trackParamName of the parameter used in tracking handlers

 ~MessageDispatcher ()

~MessageDispatcher

Destroys the dispatcher and the installed handlers.

inline const String&  trackParam ()

trackParam

[const]

Retrieve the tracker parameter name

bool  install (MessageHandler* handler)

install

Installs a handler in the dispatcher. The handlers are installed in ascending order of their priorities. There is NO GUARANTEE on the order of handlers with equal priorities although for avoiding uncertainity such handlers are sorted by address.

Parameters:
handlerA pointer to the handler to install

Returns: True on success, false on failure

bool  uninstall (MessageHandler* handler)

uninstall

Uninstalls a handler from the dispatcher.

Parameters:
handlerA pointer to the handler to uninstall

Returns: True on success, false on failure

bool  dispatch (Message& msg)

dispatch

Synchronously dispatch a message to the installed handlers. Handlers matching the message name and filter parameter are called in their installed order (based on priority) until one returns true. If the message has the broadcast flag set all matching handlers are called and the return value is true if any handler returned true. Note that in some cases when a handler is removed from the list other handlers with equal priority may be called twice.

Parameters:
msgThe message to dispatch

Returns: True if one handler accepted it, false if all ignored

bool  enqueue (Message* msg)

enqueue

Put a message in the waiting queue for asynchronous dispatching

Parameters:
msgThe message to enqueue, will be destroyed after dispatching

Returns: True if successfully queued, false otherwise

void  dequeue ()

dequeue

Dispatch all messages from the waiting queue

bool  dequeueOne ()

dequeueOne

Dispatch one message from the waiting queue

Returns: True if success, false if the queue is empty

inline void  warnTime (u_int64_t usec)

warnTime

Set a limit to generate warning when a message took too long to dispatch

Parameters:
usecWarning time limit in microseconds, zero to disable

inline void  clear ()

clear

Clear all the message handlers and post-dispatch hooks

unsigned int  messageCount ()

messageCount

Get the number of messages waiting in the queue

Returns: Count of messages in the queue

unsigned int  handlerCount ()

handlerCount

Get the number of handlers in this dispatcher

Returns: Count of handlers

void  setHook (MessagePostHook* hook, bool remove = false)

setHook

Install or remove a hook to catch messages after being dispatched

Parameters:
hookPointer to a post-dispatching message hook
removeSet to True to remove the hook instead of adding

inline void  trackParam (const char* paramName)

trackParam

[protected]

Set the tracked parameter name

Parameters:
paramNameName of the parameter used in tracking handlers


Generated by: paulc on bussard on Fri Dec 21 16:28:34 2012, using kdoc 2.0a54.