Source code for caspia.node.listener

from .components import Component


[docs]class Listener: def __init__(self, on_component_event=None, on_system_event=None): self.on_component_event = on_component_event self.on_system_event = on_system_event
[docs] def process_broadcast(self, broadcast): if broadcast.is_component_broadcast and self.on_component_event: component_cls = Component.component_classes()[broadcast.type] self.on_component_event(node_cid=broadcast.source, component_id=broadcast.component_id, component_type=broadcast.type, event=component_cls.parse_broadcast(broadcast)) elif not broadcast.is_component_broadcast and self.on_system_event: # try, if a component can parse the system broadcast component_type = broadcast.group - 0x50 component_cls = Component.component_classes().get(component_type) if component_cls: event = component_cls.parse_broadcast(broadcast) if event: self.on_system_event(node_cid=broadcast.source, event=event)