diff --git a/daemon/src/routes_taker.rs b/daemon/src/routes_taker.rs index f8c26de..1537942 100644 --- a/daemon/src/routes_taker.rs +++ b/daemon/src/routes_taker.rs @@ -15,6 +15,7 @@ use std::borrow::Cow; use std::path::PathBuf; use tokio::select; use tokio::sync::watch; +use xtra::prelude::MessageChannel; use xtra::Address; #[rocket::get("/feed")] @@ -104,14 +105,13 @@ pub struct CfdOrderRequest { #[rocket::post("/cfd/order", data = "")] pub async fn post_order_request( cfd_order_request: Json, - cfd_actor_inbox: &State>, + take_offer_channel: &State>>, ) { - cfd_actor_inbox - .do_send_async(taker_cfd::TakeOffer { + take_offer_channel + .do_send(taker_cfd::TakeOffer { order_id: cfd_order_request.order_id, quantity: cfd_order_request.quantity, }) - .await .expect("actor to always be available"); } diff --git a/daemon/src/taker.rs b/daemon/src/taker.rs index fa87db4..3bbdbe9 100644 --- a/daemon/src/taker.rs +++ b/daemon/src/taker.rs @@ -23,6 +23,7 @@ use std::time::Duration; use tokio::sync::watch; use tokio_util::codec::FramedRead; use tracing_subscriber::filter::LevelFilter; +use xtra::prelude::MessageChannel; use xtra::spawn::TokioGlobalSpawnExt; use xtra::Actor; @@ -264,7 +265,12 @@ async fn main() -> Result<()> { .await .unwrap(); - Ok(rocket.manage(cfd_actor_inbox).manage(cfd_feed_receiver)) + let take_offer_channel = + MessageChannel::::clone_channel(&cfd_actor_inbox); + Ok(rocket + .manage(take_offer_channel) + .manage(cfd_actor_inbox) + .manage(cfd_feed_receiver)) }, )) .mount(