31 lines
942 B
Python
31 lines
942 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from collections.abc import Callable
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
|
||
|
|
_TERMINAL_TRADE_HANDLERS: dict[str, Callable[[dict[str, Any]], Any]] = {}
|
||
|
|
|
||
|
|
|
||
|
|
def register_terminal_trade_handler(account_id: str, handler: Callable[[dict[str, Any]], Any]) -> None:
|
||
|
|
key = str(account_id or "").strip()
|
||
|
|
if not key:
|
||
|
|
return
|
||
|
|
_TERMINAL_TRADE_HANDLERS[key] = handler
|
||
|
|
|
||
|
|
|
||
|
|
def unregister_terminal_trade_handler(account_id: str, handler: Callable[[dict[str, Any]], Any] | None = None) -> None:
|
||
|
|
key = str(account_id or "").strip()
|
||
|
|
if not key:
|
||
|
|
return
|
||
|
|
current = _TERMINAL_TRADE_HANDLERS.get(key)
|
||
|
|
if handler is None or current is handler:
|
||
|
|
_TERMINAL_TRADE_HANDLERS.pop(key, None)
|
||
|
|
|
||
|
|
|
||
|
|
def get_terminal_trade_handler(account_id: str) -> Callable[[dict[str, Any]], Any] | None:
|
||
|
|
key = str(account_id or "").strip()
|
||
|
|
if not key:
|
||
|
|
return None
|
||
|
|
return _TERMINAL_TRADE_HANDLERS.get(key)
|