build 059.12: add runtime event models
This commit is contained in:
114
app/src/market_data/acquisition/runtime/runtime_events.py
Normal file
114
app/src/market_data/acquisition/runtime/runtime_events.py
Normal 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
|
||||
Reference in New Issue
Block a user