deltatrace-deterministic-re.../deltatrace/adapters.py

42 lines
1.0 KiB
Python

from __future__ import annotations
import json
from typing import Dict, Any, List
from .trace import LocalEvent, PlanDelta, OrderEvent, FillEvent
class FixFeedAdapter:
"""Starter FIX feed adapter (simulation).
Emits LocalEvent instances as JSON over an in-process queue for now.
"""
def __init__(self) -> None:
self._outbox: List[str] = []
def emit(self, event: LocalEvent) -> None:
self._outbox.append(json.dumps(event.to_dict()))
def drain(self) -> List[str]:
out, self._outbox = self._outbox, []
return out
class ExchangeGatewaySandbox:
"""Starter exchange gateway sandbox (simulation).
Consumes JSON messages and returns a parsed dict representation.
"""
def __init__(self) -> None:
self._inbox: List[str] = []
def receive(self, payload: str) -> None:
self._inbox.append(payload)
def parse_all(self) -> List[Dict[str, Any]]:
messages = [json.loads(p) for p in self._inbox]
self._inbox.clear()
return messages