Browse Source
Use MessageChannel in post_order_request HTTP handler
testing
Lucas Soriano del Pino
3 years ago
No known key found for this signature in database
GPG Key ID: EE611E973A1530E7
2 changed files with
11 additions and
5 deletions
-
daemon/src/routes_taker.rs
-
daemon/src/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"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -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( |
|
|
|