class Router:
def __init__(self):
self.handlers = {}
def subscribe(self, event_type, handler):
self.handlers.setdefault(event_type, []).append(handler)
def publish(self, event):
outcomes = []
for handler in tuple(self.handlers.get(event["type"], [])):
try:
outcomes.append({"ok": True, "result": handler(event["payload"])})
except Exception as error:
outcomes.append({"ok": False, "error": type(error).__name__})
return outcomes