|
Nebula
|
#include <dispatcher.h>
A message Dispatcher is a specialization of a message Port.
A message Dispatcher distributes all messages it receives to the attached Ports which are interested in this message id.
+------+
+-->| Port |
/ +------+
+------------+/ +------+
--- Msg --->| Dispatcher |----->| Port |
+------------+\ +------+
\ +------+
+-->| Port |
+------+
Dispatcher objects usually serve as front end message ports which hide a more complex message processing infrastructure underneath.
Inherits Messaging::Port.
Public Member Functions | |
| Dispatcher () | |
| constructor | |
| virtual void | HandleMessage (const Ptr< Messaging::Message > &msg) |
| handle a single message (distribute to ports which accept the message) | |
| void | AttachPort (const Ptr< Port > &port) |
| attach a message port | |
| void | RemovePort (const Ptr< Port > &port) |
| remove a message port | |
| bool | HasPort (const Ptr< Port > &port) const |
| return true if a port exists | |
Public Member Functions inherited from Messaging::Port | |
| virtual void | SetupAcceptedMessages () |
| override to register accepted messages | |
| void | AttachHandler (const Ptr< Handler > &h) |
| attach a message handler to the port | |
| void | RemoveHandler (const Ptr< Handler > &h) |
| remove a message handler from the port | |
| void | RemoveAllHandlers () |
| remove all message handler from the port | |
| SizeT | GetNumHandlers () const |
| return number of handlers attached to the port | |
| const Ptr< Handler > & | GetHandlerAtIndex (IndexT i) const |
| get a message handler by index | |
| virtual void | Send (const Ptr< Message > &msg) |
| send a message to the port | |
| const Util::Array< const Id * > & | GetAcceptedMessages () const |
| get the array of accepted messages (sorted) | |
| bool | AcceptsMessage (const Id &msgId) const |
| return true if port accepts this msg | |
Public Member Functions inherited from Core::RefCounted | |
| RefCounted () | |
| constructor | |
| int | GetRefCount () const |
| get the current refcount | |
| void | AddRef () |
| increment refcount by one | |
| void | Release () |
| decrement refcount and destroy object if refcount is zero | |
| bool | IsInstanceOf (const Rtti &rtti) const |
| return true if this object is instance of given class | |
| bool | IsInstanceOf (const Util::String &className) const |
| return true if this object is instance of given class by string | |
| bool | IsInstanceOf (const Util::FourCC &classFourCC) const |
| return true if this object is instance of given class by fourcc | |
| bool | IsA (const Rtti &rtti) const |
| return true if this object is instance of given class, or a derived class | |
| bool | IsA (const Util::String &rttiName) const |
| return true if this object is instance of given class, or a derived class, by string | |
| bool | IsA (const Util::FourCC &rttiFourCC) const |
| return true if this object is instance of given class, or a derived class, by fourcc | |
| const Util::String & | GetClassName () const |
| get the class name | |
| Util::FourCC | GetClassFourCC () const |
| get the class FourCC code | |
Private Member Functions | |
| __DeclareClass (Dispatcher) | |
Private Attributes | |
| Util::Array< Ptr< Port > > | portArray |
| Util::Array< Util::Array< Ptr< Port > > > | idPorts |
| Util::Dictionary< const Id *, IndexT > | idPortMap |
Additional Inherited Members | |
Static Public Member Functions inherited from Core::RefCounted | |
| static void | DumpRefCountingLeaks () |
| dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!) | |
Protected Member Functions inherited from Messaging::Port | |
| void | RegisterMessage (const Id &msgId) |
| register a single accepted message | |
Protected Member Functions inherited from Core::RefCounted | |
| virtual | ~RefCounted () |
| destructor (called when refcount reaches zero) | |
| Messaging::Dispatcher::Dispatcher | ( | ) |
constructor
|
private |
attach a message port
Attach a new message port.
| port | pointer to a message port object |
|
virtual |
handle a single message (distribute to ports which accept the message)
Handle a message.
The message will only be distributed to ports which accept the message.
Reimplemented from Messaging::Port.
return true if a port exists
Return true if a port is already attached.
remove a message port
Remove a message port object.
| handler | pointer to message port object to be removed |
|
private |
|
private |
|
private |