Browse Source

Use MessageChannel in post_sell_order HTTP handler

refactor/no-log-handler
Lucas Soriano del Pino 3 years ago
parent
commit
3d9601e665
No known key found for this signature in database GPG Key ID: EE611E973A1530E7
  1. 3
      daemon/src/maker.rs
  2. 10
      daemon/src/routes_maker.rs

3
daemon/src/maker.rs

@ -288,8 +288,11 @@ async fn main() -> Result<()> {
tokio::spawn(maker_inc_connections_address.attach_stream(listener_stream));
tokio::spawn(wallet_sync::new(wallet, wallet_feed_sender));
let new_order_channel =
MessageChannel::<maker_cfd::NewOrder>::clone_channel(&cfd_maker_actor_inbox);
Ok(rocket
.manage(cfd_maker_actor_inbox)
.manage(new_order_channel)
.manage(cfd_feed_receiver))
},
))

10
daemon/src/routes_maker.rs

@ -17,6 +17,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")]
@ -109,18 +110,17 @@ pub struct CfdNewOrderRequest {
}
#[rocket::post("/order/sell", data = "<order>")]
pub async fn post_sell_order(
pub fn post_sell_order(
order: Json<CfdNewOrderRequest>,
cfd_actor_address: &State<Address<maker_cfd::Actor>>,
new_order_channel: &State<Box<dyn MessageChannel<maker_cfd::NewOrder>>>,
_auth: Authenticated,
) -> Result<status::Accepted<()>, Status> {
cfd_actor_address
.do_send_async(maker_cfd::NewOrder {
new_order_channel
.do_send(maker_cfd::NewOrder {
price: order.price,
min_quantity: order.min_quantity,
max_quantity: order.max_quantity,
})
.await
.map_err(|_| Status::new(500))?;
Ok(status::Accepted(None))

Loading…
Cancel
Save