Skip to main content

apple_quant_algorithmic/order/builder/
fill_policy.rs

1mod 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}