From fde90ee01d6f788486dc04d0f381f71874bf8426 Mon Sep 17 00:00:00 2001 From: Filipi Fuchter Date: Tue, 11 Mar 2025 11:33:47 -0300 Subject: [PATCH] Creating an EventEmitter util class --- src/pipecat/utils/event_emitter.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/pipecat/utils/event_emitter.py 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)