def test_update(self): self.dispatcher.register('foo', self.make_handler('base_foo')) self.dispatcher.register('#', self.make_handler('hash')) ed = EventDispatcher() ed.register('foo', self.make_handler('foo')) ed.register('bar', self.make_handler('bar')) self.dispatcher.update(ed) self.assert_dispatched_handlers_equal('foo', {'foo', 'base_foo', 'hash'}) self.assert_dispatched_handlers_equal('bar', {'hash', 'bar'})
def __new__(cls, clsname, bases, attrs): methods = {} event_dispatcher = EventDispatcher() for base in bases: if isinstance(base, InterfaceBase): methods.update(base.methods) event_dispatcher.update(base.event_dispatcher) for name, value in six.iteritems(attrs): if callable(value): if getattr(value, '_rpc', False): methods[name] = value for event_type in getattr(value, '_event_types', ()): event_dispatcher.register(event_type, value) attrs.setdefault('service_type', clsname.lower()) new_cls = super(InterfaceBase, cls).__new__(cls, clsname, bases, attrs) new_cls.methods = methods new_cls.event_dispatcher = event_dispatcher return new_cls
def __init__(self, **kwargs): super(LocalEventSystem, self).__init__(**kwargs) self.dispatcher = EventDispatcher()
def setUp(self): self.dispatcher = EventDispatcher() self.handler_log = [] self.handlers = {}