Build 060.21: integrate acquisition runtime protocols
This commit is contained in:
@@ -4,6 +4,48 @@ from __future__ import annotations
|
||||
|
||||
from typing import Protocol, runtime_checkable
|
||||
|
||||
from src.market_data.acquisition.runtime.runtime_commands import (
|
||||
ConnectCommand,
|
||||
DisconnectCommand,
|
||||
SendBinaryCommand,
|
||||
SendTextCommand,
|
||||
SubscribeCommand,
|
||||
UnsubscribeCommand,
|
||||
)
|
||||
from src.market_data.acquisition.runtime.runtime_events import (
|
||||
ConnectedEvent,
|
||||
ConnectFailedEvent,
|
||||
DisconnectedEvent,
|
||||
HeartbeatTimeoutEvent,
|
||||
MessageReceivedEvent,
|
||||
MessageSentEvent,
|
||||
ReconnectCompletedEvent,
|
||||
ReconnectFailedEvent,
|
||||
ReconnectStartedEvent,
|
||||
)
|
||||
|
||||
|
||||
AcquisitionRuntimeCommand = (
|
||||
ConnectCommand
|
||||
| DisconnectCommand
|
||||
| SubscribeCommand
|
||||
| UnsubscribeCommand
|
||||
| SendTextCommand
|
||||
| SendBinaryCommand
|
||||
)
|
||||
|
||||
AcquisitionRuntimeEvent = (
|
||||
ConnectedEvent
|
||||
| DisconnectedEvent
|
||||
| ConnectFailedEvent
|
||||
| MessageReceivedEvent
|
||||
| MessageSentEvent
|
||||
| ReconnectStartedEvent
|
||||
| ReconnectCompletedEvent
|
||||
| ReconnectFailedEvent
|
||||
| HeartbeatTimeoutEvent
|
||||
)
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class WebSocketTransportProtocol(Protocol):
|
||||
@@ -76,4 +118,48 @@ class WebSocketSubscriptionManagerProtocol(Protocol):
|
||||
|
||||
async def clear_subscriptions(self) -> None:
|
||||
"""Очистить runtime-состояние активных подписок."""
|
||||
...
|
||||
...
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class AcquisitionRuntimeCommandDispatcherProtocol(Protocol):
|
||||
"""
|
||||
Контракт передачи инфраструктурных команд в Runtime.
|
||||
|
||||
Dispatcher принимает только типизированные Runtime-команды
|
||||
и не содержит знаний о Trade, Feed, Consistency или Recovery.
|
||||
|
||||
Конкретная маршрутизация и выполнение команд будут реализованы
|
||||
в последующих Build.
|
||||
"""
|
||||
|
||||
async def dispatch(
|
||||
self,
|
||||
command: AcquisitionRuntimeCommand,
|
||||
) -> None:
|
||||
"""
|
||||
Передать одну инфраструктурную команду в Runtime.
|
||||
"""
|
||||
...
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class AcquisitionRuntimeEventPublisherProtocol(Protocol):
|
||||
"""
|
||||
Контракт публикации инфраструктурных событий Runtime.
|
||||
|
||||
Publisher передаёт уже произошедшие инфраструктурные факты
|
||||
заинтересованным потребителям и не определяет их реакцию.
|
||||
|
||||
Конкретный механизм доставки событий будет реализован
|
||||
в последующих Build.
|
||||
"""
|
||||
|
||||
async def publish(
|
||||
self,
|
||||
event: AcquisitionRuntimeEvent,
|
||||
) -> None:
|
||||
"""
|
||||
Опубликовать одно инфраструктурное событие Runtime.
|
||||
"""
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user