Browse Source

Use MessageChannel in post_order_request HTTP handler

testing
Lucas Soriano del Pino 3 years ago
parent
commit
1dbe127db9
No known key found for this signature in database GPG Key ID: EE611E973A1530E7
  1. 8
      daemon/src/routes_taker.rs
  2. 8
      daemon/src/taker.rs

8
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 = "<cfd_order_request>")]
pub async fn post_order_request(
cfd_order_request: Json<CfdOrderRequest>,
cfd_actor_inbox: &State<Address<taker_cfd::Actor>>,
take_offer_channel: &State<Box<dyn MessageChannel<taker_cfd::TakeOffer>>>,
) {
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");
}

8
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::<taker_cfd::TakeOffer>::clone_channel(&cfd_actor_inbox);
Ok(rocket
.manage(take_offer_channel)
.manage(cfd_actor_inbox)
.manage(cfd_feed_receiver))
},
))
.mount(

Loading…
Cancel
Save