transports(base): allow registering event handlers without decorators
This commit is contained in:
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Transports now allow you to register event handlers without decorators.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- `StartFrame` is now a control frame similar to `EndFrame`.
|
- `StartFrame` is now a control frame similar to `EndFrame`.
|
||||||
|
|||||||
@@ -60,20 +60,20 @@ class BaseTransport(ABC):
|
|||||||
|
|
||||||
def event_handler(self, event_name: str):
|
def event_handler(self, event_name: str):
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
self._add_event_handler(event_name, handler)
|
self.add_event_handler(event_name, handler)
|
||||||
return handler
|
return handler
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
def add_event_handler(self, event_name: str, handler):
|
||||||
|
if event_name not in self._event_handlers:
|
||||||
|
raise Exception(f"Event handler {event_name} not registered")
|
||||||
|
self._event_handlers[event_name].append(handler)
|
||||||
|
|
||||||
def _register_event_handler(self, event_name: str):
|
def _register_event_handler(self, event_name: str):
|
||||||
if event_name in self._event_handlers:
|
if event_name in self._event_handlers:
|
||||||
raise Exception(f"Event handler {event_name} already registered")
|
raise Exception(f"Event handler {event_name} already registered")
|
||||||
self._event_handlers[event_name] = []
|
self._event_handlers[event_name] = []
|
||||||
|
|
||||||
def _add_event_handler(self, event_name: str, handler):
|
|
||||||
if event_name not in self._event_handlers:
|
|
||||||
raise Exception(f"Event handler {event_name} not registered")
|
|
||||||
self._event_handlers[event_name].append(handler)
|
|
||||||
|
|
||||||
async def _call_event_handler(self, event_name: str, *args, **kwargs):
|
async def _call_event_handler(self, event_name: str, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
for handler in self._event_handlers[event_name]:
|
for handler in self._event_handlers[event_name]:
|
||||||
|
|||||||
Reference in New Issue
Block a user