use crate::{backend::LocalOrderId, instrument::InstrumentSpec};
use super::OrderGoal;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct ClientOrderTracker(LocalOrderId);
impl ClientOrderTracker {
pub(crate) fn new(local_order_id: LocalOrderId) -> Self {
Self(local_order_id)
}
pub fn as_local_order_id(&self) -> &LocalOrderId {
&self.0
}
pub fn into_local_order_id(self) -> LocalOrderId {
self.0
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RemoteOrderTracker<IS: InstrumentSpec>(OrderGoal<IS>);
impl<IS: InstrumentSpec> RemoteOrderTracker<IS> {
pub(crate) fn new(order_goal: OrderGoal<IS>) -> Self {
Self(order_goal)
}
pub fn as_order_goal(&self) -> &OrderGoal<IS> {
&self.0
}
pub fn into_order_goal(self) -> OrderGoal<IS> {
self.0
}
pub fn as_local_order_id(&self) -> &LocalOrderId {
self.0
.as_local_order_id()
.unwrap()
}
pub fn into_local_order_id(self) -> LocalOrderId {
*self
.0
.as_local_order_id()
.unwrap()
}
}