Package elisa :: Package core :: Package bus :: Module bus :: Class Bus
[hide private]
[frames] | no frames]

Class Bus

source code


Python objects can register callbacks with the bus and be called when elisa.core.bus.bus_message.Messages are sent by other objects.

Here is a simple example:
   bus = Bus()

   def my_cb(message, sender):
       print 'Got message %r from %r' % (message, sender)

   bus.register(my_cb)

   bus.send_message(Message())
Messages dispatching empties the message queue and call the registered callbacks. Messages filtering is also supported, just pass a Message type class to bus.register(), like this:
   bus.register(my_cb, Message)
You can filter on multiple Message types by supplying a list to bus.register():
   bus.register(my_cb, (FooMessage, DataMessage))


Instance Methods [hide private]
 
__init__(self)
Initialize the Message queue and the callbacks dictionary.
source code
 
_dispatch_queued_msgs(self) source code
 
start(self)
Start message dispatching: once started, messages sent over the bus are guaranteed to be dispatched.
source code
 
stop(self)
Stop message dispatching: messages sent over the bus will not be dispatched automatically anymore, they will be locally queued.
source code
 
send_message(self, message, sender='frontend')
Send a message over the bus.
source code
 
register(self, callback, *message_types)
Register a new callback with the bus.
source code
 
unregister(self, callback)
Unregister a callback from the bus.
source code
 
_dispatch(self, message, sender)
Dispatch messages to registered callbacks and empty the message queue.
source code

Inherited from extern.log.log.Loggable: debug, doLog, error, info, log, logFunction, logObjectName, warning, warningFailure

Inherited from object: __delattr__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __str__

Class Variables [hide private]

Inherited from extern.log.log.Loggable: logCategory

Instance Variables [hide private]
dict, keys are callable objects and values are Message types lists callbacks
registered callbacks
Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self)
(Constructor)

source code 
Initialize the Message queue and the callbacks dictionary.
Overrides: log.Loggable.__init__

start(self)

source code 

Start message dispatching: once started, messages sent over the bus are guaranteed to be dispatched.

Queued messages are dispatched inside a separate thread.

send_message(self, message, sender='frontend')

source code 

Send a message over the bus. The message is automatically dispatched (inside a thread) if the Bus is running. Otherwise the message is locally queued until the Bus starts.

MT safe.
Parameters:

register(self, callback, *message_types)

source code 

Register a new callback with the bus. The given callback will be called when a message of one of the given types is dispatched on the bus.

MT safe.
Parameters:
  • callback (callable) - the callback to register
  • message_types (type or list of types) - Message types to filter on

unregister(self, callback)

source code 

Unregister a callback from the bus.

MT safe.
Parameters:
  • callback (callable) - the callback to register