Skip to main content

apple_quant_algorithmic/order/dependency/
client.rs

1mod cancel;
2mod submit;
3
4use std::ops::{Deref, DerefMut};
5
6use crate::instrument::InstrumentSpec;
7
8use super::{
9	remote::{CancelRemoteOrder, SubmitRemoteOrder},
10	OrderAction,
11};
12
13pub use cancel::*;
14pub use submit::*;
15
16#[derive(Debug, Clone, PartialEq, Eq, Hash)]
17pub struct ClientDeployedRemoteDependency<IS: InstrumentSpec>(SubmitRemoteOrder<IS>);
18
19impl<IS: InstrumentSpec> ClientDeployedRemoteDependency<IS> {
20	pub fn new(
21		submit_remote_order: SubmitRemoteOrder<IS>,
22	) -> Self {
23		Self(submit_remote_order)
24	}
25
26	pub(crate) fn into_order_action(
27		self,
28	) -> OrderAction<IS> {
29		self.0.into_order_action()
30	}
31}
32
33impl<IS: InstrumentSpec> Deref for ClientDeployedRemoteDependency<IS> {
34	type Target = SubmitRemoteOrder<IS>;
35
36	fn deref(
37		&self,
38	) -> &Self::Target {
39		&self.0
40	}
41}
42
43impl<IS: InstrumentSpec> DerefMut for ClientDeployedRemoteDependency<IS> {
44	fn deref_mut(
45		&mut self,
46	) -> &mut Self::Target {
47		&mut self.0
48	}
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Hash)]
52pub struct ClientOrderAction<IS: InstrumentSpec>(OrderAction<IS>);
53
54impl<IS: InstrumentSpec> ClientOrderAction<IS> {
55	pub fn new(
56		order_action: OrderAction<IS>,
57	) -> Self {
58		Self(order_action)
59	}
60
61	pub fn into_order_action(
62		self,
63	) -> OrderAction<IS> {
64		self.0
65	}
66}
67
68impl<IS: InstrumentSpec> Deref for ClientOrderAction<IS> {
69	type Target = OrderAction<IS>;
70
71	fn deref(
72		&self,
73	) -> &Self::Target {
74		&self.0
75	}
76}
77
78impl<IS: InstrumentSpec> DerefMut for ClientOrderAction<IS> {
79	fn deref_mut(
80		&mut self,
81	) -> &mut Self::Target {
82		&mut self.0
83	}
84}