build 059.11: add runtime command models

This commit is contained in:
2026-07-17 19:40:59 +03:00
parent 4977c7678a
commit d2d8f8fad4
3 changed files with 759 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
# app/src/market_data/acquisition/runtime/runtime_commands.py
from __future__ import annotations
from dataclasses import dataclass
from src.market_data.acquisition.runtime.transport_messages import (
TransportBinaryMessage,
TransportTextMessage,
)
TransportMessage = TransportTextMessage | TransportBinaryMessage
@dataclass(frozen=True, slots=True)
class ConnectCommand:
"""
Команда на открытие транспортного соединения.
Команда выражает намерение Runtime и не выполняет подключение
самостоятельно.
"""
@dataclass(frozen=True, slots=True)
class DisconnectCommand:
"""
Команда на закрытие транспортного соединения.
Команда не содержит сетевой логики и не управляет транспортом
самостоятельно.
"""
@dataclass(frozen=True, slots=True)
class SubscribeCommand:
"""
Команда на регистрацию и отправку транспортной подписки.
subscription_key является стабильным идентификатором подписки,
используемым будущим Subscription Manager.
message содержит уже подготовленный транспортный payload.
Runtime не интерпретирует его содержимое.
"""
subscription_key: str
message: TransportMessage
@dataclass(frozen=True, slots=True)
class UnsubscribeCommand:
"""
Команда на удаление и отправку отмены транспортной подписки.
subscription_key связывает отмену с ранее зарегистрированной
подпиской.
message содержит уже подготовленный транспортный payload.
"""
subscription_key: str
message: TransportMessage
@dataclass(frozen=True, slots=True)
class SendTextCommand:
"""
Команда на отправку текстового транспортного сообщения.
"""
message: TransportTextMessage
@dataclass(frozen=True, slots=True)
class SendBinaryCommand:
"""
Команда на отправку бинарного транспортного сообщения.
"""
message: TransportBinaryMessage