Browse Source

优化rest回调的流程控制。

skyfffire 2 years ago
parent
commit
ad09dd751d
2 changed files with 5 additions and 4 deletions
  1. 1 1
      src/main.rs
  2. 4 3
      src/quant_libs.rs

+ 1 - 1
src/main.rs

@@ -25,7 +25,7 @@ async fn main() {
     // 退出检查程序
     let running = control_c::exit_handler();
     // quant初始化动作
-    let quant_arc = quant_libs::init(params).await;
+    let quant_arc = quant_libs::init(params, running).await;
     // 初始化中控服务
     server::run_server(6000, running.clone(), quant_arc.clone());
 

+ 4 - 3
src/quant_libs.rs

@@ -4,6 +4,7 @@ use std::collections::BTreeMap;
 use std::io::Error;
 use strategy::{exchange_disguise, quant};
 use std::sync::Arc;
+use std::sync::atomic::{AtomicBool, Ordering};
 use std::time::Duration;
 use tokio::sync::{mpsc, Mutex};
 use tracing::{error, info};
@@ -11,7 +12,7 @@ use standard::exchange::ExchangeEnum::GateSwap;
 use standard::Order;
 use strategy::model::OrderInfo;
 
-pub async fn init(params: Params) -> Arc<Mutex<Quant>> {
+pub async fn init(params: Params, running: Arc<AtomicBool>) -> Arc<Mutex<Quant>> {
     // 封装
     let mut exchange_params:BTreeMap<String, String> = BTreeMap::new();
     exchange_params.insert("access_key".to_string(), params.access_key.clone());
@@ -39,7 +40,7 @@ pub async fn init(params: Params) -> Arc<Mutex<Quant>> {
 
     let order_handler_quant_arc = quant_arc.clone();
     tokio::spawn(async move {
-        loop {
+        while running.load(Ordering::Relaxed) {
             tokio::time::sleep(Duration::from_millis(1)).await;
 
             match order_receiver.recv().await {
@@ -74,7 +75,7 @@ pub async fn init(params: Params) -> Arc<Mutex<Quant>> {
 
     // let error_handler_quant_arc = quant_arc.clone();
     tokio::spawn(async move {
-        loop {
+        while running.load(Ordering::Relaxed) {
             tokio::time::sleep(Duration::from_millis(1)).await;
 
             match error_receiver.recv().await {