apple_quant_algorithmic/order/builder/
fill_policy.rs1mod cancel_all_children;
2mod nothing;
3
4use enum_dispatch::enum_dispatch;
5
6use crate::{
7 order::{OrderAction, RemoteTimingCondition, TimingCondition},
8 instrument::InstrumentSpec,
9};
10
11use super::dependency::{OrderBuilderDependencies, OrderBuilderDependency};
12
13pub use cancel_all_children::*;
14pub use nothing::*;
15
16#[enum_dispatch]
17#[derive(Debug, Clone, PartialEq, Eq, Hash)]
18pub enum FillPolicyEnum {
19 Nothing,
20 CancelAllChildren,
21}
22
23impl AsRef<Self> for FillPolicyEnum {
24 fn as_ref(
25 &self,
26 ) -> &Self {
27 self
28 }
29}
30
31#[enum_dispatch(FillPolicyEnum)]
32pub trait FillPolicy: Clone {
33 fn build_remote<
34 IS: InstrumentSpec,
35 const INLINE_LEN: usize,
36 >(
37 &self,
38 dependency: &OrderBuilderDependency<IS>,
39 dependencies: &OrderBuilderDependencies<IS, INLINE_LEN>,
40 ) -> Vec<(
41 RemoteTimingCondition,
42 OrderAction<IS>,
43 )>;
44
45 fn build_client<
46 IS: InstrumentSpec,
47 const INLINE_LEN: usize,
48 >(
49 &self,
50 dependency: &OrderBuilderDependency<IS>,
51 dependencies: &OrderBuilderDependencies<IS, INLINE_LEN>,
52 ) -> Vec<(
53 TimingCondition,
54 OrderAction<IS>,
55 )>;
56}