Skip to main content

apple_quant_algorithmic/backend/orders/
update.rs

1use thingbuf::Recycle;
2
3use crate::{
4	aggregation::TradeTradeTimestampListInline, instrument::InstrumentSpec,
5	order::OrderStateUpdateListInline,
6};
7
8pub struct OrdersBackendUpdate<IS: InstrumentSpec> {
9	pub(crate) trades: TradeTradeTimestampListInline<IS, 8>,
10	pub(crate) order_state_updates: OrderStateUpdateListInline<IS, 4>,
11}
12
13impl<IS: InstrumentSpec> Default for OrdersBackendUpdate<IS> {
14	fn default() -> Self {
15		Self {
16			trades: TradeTradeTimestampListInline::default(),
17			order_state_updates: OrderStateUpdateListInline::default(),
18		}
19	}
20}
21
22pub struct OrdersBackendUpdateRecycle;
23
24impl<IS: InstrumentSpec> Recycle<OrdersBackendUpdate<IS>> for OrdersBackendUpdateRecycle {
25	fn new_element(
26		&self,
27	) -> OrdersBackendUpdate<IS> {
28		OrdersBackendUpdate::default()
29	}
30
31	fn recycle(
32		&self,
33		element: &mut OrdersBackendUpdate<IS>,
34	) {
35		element.order_state_updates.clear();
36		element.trades.clear();
37	}
38}