Flip ems-side-client (`OrderBook`) to be a struct
`@dataclass` is so 2 years ago ;) Also rename `.update()` -> `.send_update()` to be a bit more explicit about actually sending an update msg.offline_dark_clearing
							parent
							
								
									c246dcef6f
								
							
						
					
					
						commit
						8cd56cb6d3
					
				|  | @ -19,15 +19,14 @@ Orders and execution client API. | |||
| 
 | ||||
| """ | ||||
| from contextlib import asynccontextmanager as acm | ||||
| from typing import Dict | ||||
| from pprint import pformat | ||||
| from dataclasses import dataclass, field | ||||
| 
 | ||||
| import trio | ||||
| import tractor | ||||
| from tractor.trionics import broadcast_receiver | ||||
| 
 | ||||
| from ..log import get_logger | ||||
| from ..data.types import Struct | ||||
| from ._ems import _emsd_main | ||||
| from .._daemon import maybe_open_emsd | ||||
| from ._messages import Order, Cancel | ||||
|  | @ -37,8 +36,7 @@ from ..brokers import get_brokermod | |||
| log = get_logger(__name__) | ||||
| 
 | ||||
| 
 | ||||
| @dataclass | ||||
| class OrderBook: | ||||
| class OrderBook(Struct): | ||||
|     '''EMS-client-side order book ctl and tracking. | ||||
| 
 | ||||
|     A style similar to "model-view" is used here where this api is | ||||
|  | @ -53,9 +51,7 @@ class OrderBook: | |||
|     # mem channels used to relay order requests to the EMS daemon | ||||
|     _to_ems: trio.abc.SendChannel | ||||
|     _from_order_book: trio.abc.ReceiveChannel | ||||
| 
 | ||||
|     _sent_orders: Dict[str, Order] = field(default_factory=dict) | ||||
|     _ready_to_receive: trio.Event = trio.Event() | ||||
|     _sent_orders: dict[str, Order] = {} | ||||
| 
 | ||||
|     def send( | ||||
|         self, | ||||
|  | @ -66,7 +62,7 @@ class OrderBook: | |||
|         self._to_ems.send_nowait(msg) | ||||
|         return msg | ||||
| 
 | ||||
|     def update( | ||||
|     def send_update( | ||||
|         self, | ||||
| 
 | ||||
|         uuid: str, | ||||
|  |  | |||
|  | @ -679,6 +679,8 @@ async def translate_and_relay_brokerd_events( | |||
| 
 | ||||
|                 # fan-out-relay position msgs immediately by | ||||
|                 # broadcasting updates on all client streams | ||||
|                 # TODO: this should be subscription based for privacy | ||||
|                 # eventually! | ||||
|                 await router.client_broadcast('all', pos_msg) | ||||
|                 continue | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue