Build 060.20.2: integrate Consistency with Trade Runtime
This commit is contained in:
@@ -9,6 +9,9 @@ from src.market_data.acquisition.consistency.trade_stream_state import (
|
||||
TradeStreamState,
|
||||
)
|
||||
from src.market_data.acquisition.models.trade import Trade
|
||||
from src.market_data.acquisition.runtime.trade.trade_runtime_protocol import (
|
||||
TradeRuntimeProtocol,
|
||||
)
|
||||
|
||||
|
||||
class TradeStreamConsistencyController(
|
||||
@@ -18,11 +21,17 @@ class TradeStreamConsistencyController(
|
||||
Контроллер проверки согласованности Canonical Trade Stream.
|
||||
|
||||
Для каждого торгового инструмента поддерживается
|
||||
независимое состояние проверки.
|
||||
независимое состояние проверки, которое хранится
|
||||
в Trade Runtime Registry.
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._states: dict[str, TradeStreamState] = {}
|
||||
_RUNTIME_NAMESPACE = "consistency"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
runtime: TradeRuntimeProtocol,
|
||||
) -> None:
|
||||
self._runtime = runtime
|
||||
|
||||
def accept(
|
||||
self,
|
||||
@@ -36,10 +45,24 @@ class TradeStreamConsistencyController(
|
||||
self,
|
||||
symbol: str,
|
||||
) -> TradeStreamState:
|
||||
state = self._states.get(symbol)
|
||||
key = self._runtime_key(symbol)
|
||||
|
||||
if state is None:
|
||||
state = TradeStreamState(symbol=symbol)
|
||||
self._states[symbol] = state
|
||||
if self._runtime.is_registered(key):
|
||||
return self._runtime.get(key)
|
||||
|
||||
return state
|
||||
state = TradeStreamState(symbol=symbol)
|
||||
self._runtime.register(key, state)
|
||||
|
||||
return state
|
||||
|
||||
@classmethod
|
||||
def _runtime_key(
|
||||
cls,
|
||||
symbol: str,
|
||||
) -> str:
|
||||
"""
|
||||
Возвращает ключ Runtime Registry
|
||||
для состояния проверки Trade Stream.
|
||||
"""
|
||||
|
||||
return f"{cls._RUNTIME_NAMESPACE}:{symbol}"
|
||||
|
||||
Reference in New Issue
Block a user