Переглянути джерело

加入中控,具体逻辑还没写,目前是抽象状态。

skyfffire 2 роки тому
батько
коміт
70628dfd83
2 змінених файлів з 29 додано та 15 видалено
  1. 8 3
      src/main.rs
  2. 21 12
      src/server.rs

+ 8 - 3
src/main.rs

@@ -6,8 +6,7 @@ use std::str::FromStr;
 use std::sync::Arc;
 use tokio::sync::{mpsc, Mutex};
 use tokio::try_join;
-use tracing::{error, info, subscriber};
-use exchanges::response_base::ResponseData;
+use tracing::{error, info};
 use standard::Order;
 use strategy::params::Params;
 use strategy::quant;
@@ -71,5 +70,11 @@ async fn main() {
         }
     });
 
-    try_join!(order_handler_thread, error_handler_thread).unwrap();
+    let server_thread = tokio::spawn(async move {
+        let server = server::run_server(5566, quant_arc);
+        info!("中控服务已运行。");
+        server.await
+    });
+
+    try_join!(order_handler_thread, error_handler_thread, server_thread).unwrap();
 }

+ 21 - 12
src/server.rs

@@ -4,8 +4,7 @@ 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;
-
+use tracing::{debug, info};
 #[derive(Deserialize)]
 #[derive(Debug)]
 struct InputData {
@@ -29,13 +28,23 @@ async fn post_handler(quant_arc: web::Data<Arc<Mutex<Quant>>>, input: web::Json<
 }
 
 // Server要.await才能使用
-// pub fn run_server(port: u32, quant_arc: Arc<Mutex<Quant>>) -> Server {
-//     return HttpServer::new(move || {
-//         App::new()
-//             .app_data(web::Data::new(quant_arc.clone()))
-//             .service(get_handler)
-//             .service(post_handler)
-//     })
-//     .bind(format!("127.0.0.1:{}", port))?
-//     .run();
-// }
+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()))
+        }
+    }
+}