1
0
Fork 0

comm/method: exchange bytes instead of JSON interpreted data

for more flexibility
main
Felix Stupp 3 months ago
parent 54836ba97b
commit 5c6007b71a
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -14,10 +14,6 @@ from typing import (
TypeAlias,
)
from ...our_types import (
JSON,
)
class TransmissionSuccess(Enum):
UNKNOWN_ERROR = auto()
@ -25,13 +21,13 @@ class TransmissionSuccess(Enum):
SUBMITTED_SUCCESSFULLY = auto()
MessageHandler: TypeAlias = Callable[[JSON], Awaitable[None]]
MessageHandler: TypeAlias = Callable[[bytes], Awaitable[None]]
class TransportMethod(ABC):
@abstractmethod
async def send(self, data: JSON) -> TransmissionSuccess: ...
async def send(self, data: bytes) -> TransmissionSuccess: ...
@abstractmethod
def on_receive(self, handler: MessageHandler) -> None:

@ -8,7 +8,6 @@ from .interface import (
TransportMethod,
TransmissionSuccess,
)
from ...our_types import JSON
class InternalTransport(TransportMethod):
@ -20,7 +19,7 @@ class InternalTransport(TransportMethod):
__recv_handler: MessageHandler | None = None
__send_handler: MessageHandler | None = None
async def send(self, data: JSON) -> TransmissionSuccess:
async def send(self, data: bytes) -> TransmissionSuccess:
if self.__send_handler is None:
return TransmissionSuccess.EXCHANGE_UNAVAILABLE
await self.__send_handler(data)
@ -29,7 +28,7 @@ class InternalTransport(TransportMethod):
def on_receive(self, handler: MessageHandler) -> None:
self.__recv_handler = handler
async def _submit(self, data: JSON) -> None:
async def _submit(self, data: bytes) -> None:
if self.__recv_handler is None:
return
await self.__recv_handler(data)
@ -42,7 +41,7 @@ class InternalExchanger:
__transports = set[InternalTransport]()
async def __send_handler(self, sender: InternalTransport, data: JSON) -> None:
async def __send_handler(self, sender: InternalTransport, data: bytes) -> None:
async with asyncio.TaskGroup() as group:
for receiver in self.__transports:
if receiver is sender:

@ -38,12 +38,12 @@ class InternalTransportTwoPeers(IsolatedAsyncioTestCase):
mock_bob = AsyncCallableMock()
peer_bob.on_receive(mock_bob)
# send from Alice to Bob
await peer_alice.send("test Alice -> Bob")
await peer_alice.send(b"test Alice -> Bob")
mock_alice.assert_not_called()
mock_bob.assert_called_once_with("test Alice -> Bob")
mock_bob.assert_called_once_with(b"test Alice -> Bob")
mock_alice.reset_mock()
mock_bob.reset_mock()
# send from Bob to Alice
await peer_bob.send("test Bob -> Alice")
mock_alice.assert_called_once_with("test Bob -> Alice")
await peer_bob.send(b"test Bob -> Alice")
mock_alice.assert_called_once_with(b"test Bob -> Alice")
mock_bob.assert_not_called()

Loading…
Cancel
Save