mod cancel_all_children;
mod nothing;
use enum_dispatch::enum_dispatch;
use crate::{
order::{OrderAction, RemoteTimingCondition, TimingCondition},
instrument::InstrumentSpec,
};
use super::dependency::{OrderBuilderDependencies, OrderBuilderDependency};
pub use cancel_all_children::*;
pub use nothing::*;
#[enum_dispatch]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum FillPolicyEnum {
Nothing,
CancelAllChildren,
}
impl AsRef<Self> for FillPolicyEnum {
fn as_ref(
&self,
) -> &Self {
self
}
}
#[enum_dispatch(FillPolicyEnum)]
pub trait FillPolicy: Clone {
fn build_remote<
IS: InstrumentSpec,
const INLINE_LEN: usize,
>(
&self,
dependency: &OrderBuilderDependency<IS>,
dependencies: &OrderBuilderDependencies<IS, INLINE_LEN>,
) -> Vec<(
RemoteTimingCondition,
OrderAction<IS>,
)>;
fn build_client<
IS: InstrumentSpec,
const INLINE_LEN: usize,
>(
&self,
dependency: &OrderBuilderDependency<IS>,
dependencies: &OrderBuilderDependencies<IS, INLINE_LEN>,
) -> Vec<(
TimingCondition,
OrderAction<IS>,
)>;
}