Skip to content

Commit d26396e

Browse files
committed
messagebus becomes a class, requires handlers [messagebus_as_class]
1 parent 423f1fb commit d26396e

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

src/allocation/service_layer/messagebus.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# pylint: disable=broad-except
22
from __future__ import annotations
33
import logging
4-
from typing import Union, TYPE_CHECKING
4+
from typing import Callable, Dict, List, Union, Type, TYPE_CHECKING
55
from allocation.domain import commands, events
6-
from . import handlers
76

87
if TYPE_CHECKING:
98
from . import unit_of_work
@@ -13,16 +12,27 @@
1312
Message = Union[commands.Command, events.Event]
1413

1514

16-
def handle(message: Message, uow: unit_of_work.AbstractUnitOfWork):
17-
queue = [message]
18-
while queue:
19-
message = queue.pop(0)
20-
if isinstance(message, events.Event):
21-
handle_event(message, queue, uow)
22-
elif isinstance(message, commands.Command):
23-
handle_command(message, queue, uow)
24-
else:
25-
raise Exception(f"{message} was not an Event or Command")
15+
class MessageBus:
16+
def __init__(
17+
self,
18+
uow: unit_of_work.AbstractUnitOfWork,
19+
event_handlers: Dict[Type[events.Event], List[Callable]],
20+
command_handlers: Dict[Type[commands.Command], Callable],
21+
):
22+
self.uow = uow
23+
self.event_handlers = event_handlers
24+
self.command_handlers = command_handlers
25+
26+
def handle(self, message: Message):
27+
self.queue = [message]
28+
while self.queue:
29+
message = self.queue.pop(0)
30+
if isinstance(message, events.Event):
31+
self.handle_event(message)
32+
elif isinstance(message, commands.Command):
33+
self.handle_command(message)
34+
else:
35+
raise Exception(f"{message} was not an Event or Command")
2636

2737

2838
def handle_event(

0 commit comments

Comments
 (0)