26 lines
628 B
Python
26 lines
628 B
Python
from punq import Container
|
|
from typing import TypeVar
|
|
from pyee import EventEmitter
|
|
|
|
from kernel.event.listener import Listener
|
|
|
|
T = TypeVar('T')
|
|
|
|
|
|
class Registrar:
|
|
_container: Container
|
|
|
|
def __init__(self, container: Container) -> None:
|
|
self._container = container
|
|
|
|
def add_event_listener(
|
|
self,
|
|
event: str,
|
|
listener: type[Listener[T]]
|
|
) -> None:
|
|
async def callback(payload: T) -> None:
|
|
listener_instance = listener(self._container)
|
|
await listener_instance.handle(event, payload)
|
|
|
|
self._container.resolve(EventEmitter).on(event, callback)
|