diff --git a/src/pipecat/utils/event_emitter.py b/src/pipecat/utils/event_emitter.py new file mode 100644 index 000000000..dcffd2fd1 --- /dev/null +++ b/src/pipecat/utils/event_emitter.py @@ -0,0 +1,20 @@ +class EventEmitter: + def __init__(self): + self._events = {} + + def on(self, event_name): + """Decorator to register an event handler.""" + + def decorator(func): + if event_name not in self._events: + self._events[event_name] = [] + self._events[event_name].append(func) + return func + + return decorator + + async def emit(self, event_name, *args, **kwargs): + """Trigger all handlers for a given event.""" + if event_name in self._events: + for handler in self._events[event_name]: + await handler(*args, **kwargs)