code reorganization

This commit is contained in:
Giulio De Pasquale 2021-02-12 14:56:30 +00:00
parent 054b3b6659
commit 7ba90a72c0

View File

@ -33,40 +33,6 @@ pub struct PriceManager {
client: Client, client: Client,
} }
pub struct PriceManagerHandle {
sender: Sender<ActorMessage>,
}
impl PriceManagerHandle {
async fn run_price_manager(mut manager: PriceManager) {
while let Some(msg) = manager.receiver.recv().await {
manager.handle_message(msg).await.unwrap();
}
}
pub fn new(pair: SymbolPair, client: Client) -> Self {
let (sender, receiver) = channel(1);
let price_manager = PriceManager::new(receiver, pair, client);
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
Self { sender }
}
pub async fn update(&mut self, tick: u64) -> Result<OptionUpdate, BoxError> {
let (send, recv) = oneshot::channel();
self.sender
.send(ActorMessage {
message: Message::Update { tick },
respond_to: send,
})
.await?;
Ok(recv.await?)
}
}
impl PriceManager { impl PriceManager {
pub fn new(receiver: Receiver<ActorMessage>, pair: SymbolPair, client: Client) -> Self { pub fn new(receiver: Receiver<ActorMessage>, pair: SymbolPair, client: Client) -> Self {
PriceManager { PriceManager {
@ -112,6 +78,40 @@ impl PriceManager {
} }
} }
pub struct PriceManagerHandle {
sender: Sender<ActorMessage>,
}
impl PriceManagerHandle {
async fn run_price_manager(mut manager: PriceManager) {
while let Some(msg) = manager.receiver.recv().await {
manager.handle_message(msg).await.unwrap();
}
}
pub fn new(pair: SymbolPair, client: Client) -> Self {
let (sender, receiver) = channel(1);
let price_manager = PriceManager::new(receiver, pair, client);
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
Self { sender }
}
pub async fn update(&mut self, tick: u64) -> Result<OptionUpdate, BoxError> {
let (send, recv) = oneshot::channel();
self.sender
.send(ActorMessage {
message: Message::Update { tick },
respond_to: send,
})
.await?;
Ok(recv.await?)
}
}
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct PriceEntry { pub struct PriceEntry {
tick: u64, tick: u64,
@ -431,14 +431,14 @@ impl OrderManager {
// No open order, undercutting best price with limit order // No open order, undercutting best price with limit order
let closing_price = self.best_closing_price(&position, &order_book); let closing_price = self.best_closing_price(&position, &order_book);
// TODO: hardcoded platform to Margin! // TODO: hardcoded platform to Derivative!
let order_form = OrderForm::new( let order_form = OrderForm::new(
self.pair.clone(), self.pair.clone(),
OrderKind::Limit { OrderKind::Limit {
price: closing_price, price: closing_price,
amount: position.amount().neg(), amount: position.amount().neg(),
}, },
TradingPlatform::Margin, TradingPlatform::Derivative,
); );
info!("Submitting {} order", order_form.kind()); info!("Submitting {} order", order_form.kind());