Restructuring controller to broaden usability; changed events logic to support that
This commit is contained in:
3
src/libs/controllers/__init__.py
Normal file
3
src/libs/controllers/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
Libs Controllers Package
|
||||
"""
|
||||
38
src/libs/controllers/controller_base.py
Normal file
38
src/libs/controllers/controller_base.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
|
||||
# Application imports
|
||||
from libs.singleton import Singleton
|
||||
|
||||
from ..dto.base_event import BaseEvent
|
||||
|
||||
from .emit_dispatcher import EmitDispatcher
|
||||
from .controller_context import ControllerContext
|
||||
|
||||
|
||||
|
||||
class ControllerBaseException(Exception):
|
||||
...
|
||||
|
||||
|
||||
|
||||
class ControllerBase(Singleton, EmitDispatcher):
|
||||
def __init__(self):
|
||||
super(ControllerBase, self).__init__()
|
||||
|
||||
self.controller_context: ControllerContext = None
|
||||
|
||||
|
||||
def _controller_message(self, event: BaseEvent):
|
||||
raise ControllerBaseException("Controller Base must override '_controller_message'...")
|
||||
|
||||
def set_controller_context(self, controller_context: ControllerContext):
|
||||
self.controller_context = controller_context
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
return self.controller_context.message_to(name, event)
|
||||
|
||||
def message_all(self, event: BaseEvent):
|
||||
return self.controller_context.message_all(event)
|
||||
|
||||
24
src/libs/controllers/controller_context.py
Normal file
24
src/libs/controllers/controller_context.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
|
||||
# Application imports
|
||||
from ..dto.base_event import BaseEvent
|
||||
|
||||
|
||||
|
||||
class ControllerContextException(Exception):
|
||||
...
|
||||
|
||||
|
||||
|
||||
class ControllerContext:
|
||||
def __init__(self):
|
||||
super(ControllerContext, self).__init__()
|
||||
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
raise ControllerContextException("Controller Context 'message_to' must be overriden by Controller Manager...")
|
||||
|
||||
def message_all(self, event: BaseEvent):
|
||||
raise ControllerContextException("Controller Context 'message_all' must be overriden by Controller Manager...")
|
||||
19
src/libs/controllers/emit_dispatcher.py
Normal file
19
src/libs/controllers/emit_dispatcher.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
|
||||
# Application imports
|
||||
from ..dto.base_event import BaseEvent
|
||||
|
||||
|
||||
|
||||
class EmitDispatcher:
|
||||
def __init__(self):
|
||||
super(EmitDispatcher, self).__init__()
|
||||
|
||||
|
||||
def emit(self, event: BaseEvent):
|
||||
self.message_all(event)
|
||||
|
||||
def emit_to(self, controller: str, event: BaseEvent):
|
||||
self.message_to(controller, event)
|
||||
Reference in New Issue
Block a user