apple_quant_algorithmic/backend/
data.rs1use tokio::{fs::File, io::BufReader};
2
3use crate::{
4 backend::{OrdersBackendUpdate, OrdersBackendUpdateRecycle},
5 instrument::InstrumentSpec, order_manager::OrdersCapacitySpec, strategy::Strategy,
6 timestamp::TimestampRangeExclusive, Frontend,
7};
8
9use super::{HistoricalDataBackend, MarketDataDecoderProvider, OrdersBackend};
10
11pub trait DataBackend<
12 'instrument_data,
13 'aggregated_data,
14 IS: InstrumentSpec,
15 OB: OrdersBackend<IS>,
16 OrdersCS: OrdersCapacitySpec,
17 S: Strategy<IS, OB, OrdersCS>,
18>: MarketDataDecoderProvider<IS> {
19 fn new(
20 data_key: Option<&str>,
21 frontend: Frontend<'instrument_data, 'aggregated_data, IS, OB, OrdersCS, S>,
22 orders_backend_update_receiver: thingbuf::mpsc::Receiver<
23 OrdersBackendUpdate<IS>,
24 OrdersBackendUpdateRecycle,
25 >,
26 ) -> Self;
27
28 fn file_name_postpend() -> &'static str;
29
30 fn backtest(
31 &mut self,
32 walk_range: TimestampRangeExclusive,
33 ) -> impl Future<Output = ()>;
34
35 fn decode_market_data(
36 buf_readers: impl ExactSizeIterator<Item = BufReader<File>>,
37 ) -> impl Future<Output = Self::MarketDataDecoder>;
38
39 fn historical_mut(
40 &mut self,
41 ) -> Option<Result<&mut impl HistoricalDataBackend<IS>, ()>>;
42}