build 059.10: add runtime transport message models

This commit is contained in:
2026-07-17 19:29:49 +03:00
parent 8109ed6210
commit 4977c7678a
3 changed files with 488 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
# app/src/market_data/acquisition/runtime/transport_messages.py
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True, slots=True)
class TransportTextMessage:
"""
Транспортное текстовое сообщение.
Представляет уже полученный или подготовленный для отправки
текстовый payload без какой-либо интерпретации содержимого.
"""
payload: str
@dataclass(frozen=True, slots=True)
class TransportBinaryMessage:
"""
Транспортное бинарное сообщение.
Представляет уже полученный или подготовленный для отправки
бинарный payload без какой-либо интерпретации содержимого.
"""
payload: bytes

View File

@@ -0,0 +1,36 @@
# app/tests/unit/market_data/acquisition/runtime/test_transport_messages.py
from dataclasses import FrozenInstanceError
import pytest
from src.market_data.acquisition.runtime.transport_messages import (
TransportBinaryMessage,
TransportTextMessage,
)
def test_transport_text_message() -> None:
message = TransportTextMessage(payload='{"ping":1}')
assert message.payload == '{"ping":1}'
def test_transport_binary_message() -> None:
message = TransportBinaryMessage(payload=b"\x01\x02")
assert message.payload == b"\x01\x02"
def test_text_message_is_immutable() -> None:
message = TransportTextMessage(payload="abc")
with pytest.raises(FrozenInstanceError):
setattr(message, "payload", "def")
def test_binary_message_is_immutable() -> None:
message = TransportBinaryMessage(payload=b"\x00")
with pytest.raises(FrozenInstanceError):
setattr(message, "payload", b"\x01")