from abc import ABC from msg_container import MsgContainer from msg_sink import MsgSink class MsgSource(ABC): def __init__(self): self.sinks = [] def register_recv(self, sink: MsgSink): self.sinks.append(sink) def call_sinks(self, msg: MsgContainer): for sink in self.sinks: if sink.is_msg(msg): sink.on_recv(msg)