| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- use std::sync::Arc;
- use serde::Deserialize;
- use strategy::quant::Quant;
- use actix_web::{web, App, HttpResponse, HttpServer, Responder, post, get};
- use actix_web::dev::Server;
- use tokio::sync::Mutex;
- use tracing::{debug, info};
- #[derive(Deserialize)]
- #[derive(Debug)]
- struct InputData {
- stop: bool,
- }
- // 句柄 GET 请求
- #[get("/")]
- async fn get_handler(quant_arc: web::Data<Arc<Mutex<Quant>>>) -> impl Responder {
- let quant = quant_arc.lock().await;
- HttpResponse::Ok().body(format!("Value: {}", quant.params.log_level))
- }
- // 句柄 POST 请求
- #[post("/")]
- async fn post_handler(quant_arc: web::Data<Arc<Mutex<Quant>>>, input: web::Json<InputData>) -> impl Responder {
- let mut quant = quant_arc.lock().await;
- debug!(?input);
- HttpResponse::Ok().body(format!("Incremented Value: {}", quant.params.log_level))
- }
- // Server要.await才能使用
- pub fn run_server(port: u32, quant_arc: Arc<Mutex<Quant>>) -> Server {
- let addr = format!("127.0.0.1:{}", port);
- info!("中控绑定地址:{}", addr);
- let bind_rst = HttpServer::new(move || {
- App::new()
- .app_data(web::Data::new(quant_arc.clone()))
- .service(get_handler)
- .service(post_handler)
- })
- .bind(addr);
- return match bind_rst {
- Ok(server) => {
- server.run()
- },
- Err(err) => {
- panic!("{}", format!("Bind port error:{}", err.to_string()))
- }
- }
- }
|