build 059.12: add runtime event models

This commit is contained in:
2026-07-17 20:19:00 +03:00
parent d2d8f8fad4
commit f2bacb80c9
3 changed files with 818 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
# app/src/market_data/acquisition/runtime/runtime_events.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 ConnectedEvent:
"""
Событие успешного открытия транспортного соединения.
Событие фиксирует уже произошедший факт подключения и не содержит
логики управления транспортом.
"""
@dataclass(frozen=True, slots=True)
class DisconnectedEvent:
"""
Событие завершения транспортного соединения.
Событие не определяет причину отключения и не запускает reconnect
самостоятельно.
"""
@dataclass(frozen=True, slots=True)
class ConnectFailedEvent:
"""
Событие неуспешной попытки открытия транспортного соединения.
reason содержит безопасное текстовое описание причины ошибки.
"""
reason: str
@dataclass(frozen=True, slots=True)
class MessageReceivedEvent:
"""
Событие получения транспортного сообщения.
message содержит непрозрачный текстовый или бинарный payload.
Runtime Event не интерпретирует содержимое сообщения.
"""
message: TransportMessage
@dataclass(frozen=True, slots=True)
class MessageSentEvent:
"""
Событие успешной отправки транспортного сообщения.
message содержит сообщение, переданное транспортному уровню.
"""
message: TransportMessage
@dataclass(frozen=True, slots=True)
class ReconnectStartedEvent:
"""
Событие начала попытки восстановления соединения.
attempt содержит номер текущей попытки reconnect.
"""
attempt: int
@dataclass(frozen=True, slots=True)
class ReconnectCompletedEvent:
"""
Событие успешного завершения восстановления соединения.
attempt содержит номер попытки, на которой соединение было
восстановлено.
"""
attempt: int
@dataclass(frozen=True, slots=True)
class ReconnectFailedEvent:
"""
Событие неуспешной попытки восстановления соединения.
attempt содержит номер попытки.
reason содержит безопасное текстовое описание причины ошибки.
"""
attempt: int
reason: str
@dataclass(frozen=True, slots=True)
class HeartbeatTimeoutEvent:
"""
Событие превышения допустимого интервала heartbeat.
timeout_seconds содержит настроенный порог ожидания ответа.
"""
timeout_seconds: float