use crate::{instrument::InstrumentSpec, price::BidAskPriceSpread};
mod cancel;
mod submit;
pub use cancel::*;
pub use submit::*;
use super::{
OrderAction,
client::{CancelClientOrder, SubmitClientOrder},
};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum RemoteOrderAction<IS: InstrumentSpec> {
SubmitRemoteOrder(SubmitRemoteOrder<IS>),
SubmitClientOrder(SubmitClientOrder<IS>),
CancelRemoteOrder(CancelRemoteOrder),
CancelClientOrder(CancelClientOrder),
}
impl<IS: InstrumentSpec> RemoteOrderAction<IS> {
pub(crate) fn parent_processed(
&mut self,
bid_ask_price_spread: &BidAskPriceSpread<IS>,
) {
match self {
Self::SubmitRemoteOrder(submit_remote_order) => {
submit_remote_order.parent_processed(bid_ask_price_spread)
}
Self::SubmitClientOrder(submit_client_order) => {
submit_client_order.parent_processed(bid_ask_price_spread)
}
_ => {}
}
}
pub fn into_order_action(self) -> OrderAction<IS> {
self.into()
}
}