Browse Source

生成完就立即执行。

skyffire 1 year ago
parent
commit
7e64663ea3
1 changed files with 41 additions and 35 deletions
  1. 41 35
      standard/src/gate_swap.rs

+ 41 - 35
standard/src/gate_swap.rs

@@ -514,37 +514,6 @@ impl Platform for GateSwap {
     async fn command_order(&mut self, order_command: &mut OrderCommand, trace_stack: &TraceStack) {
     async fn command_order(&mut self, order_command: &mut OrderCommand, trace_stack: &TraceStack) {
         let mut handles = vec![];
         let mut handles = vec![];
 
 
-        // 撤销订单
-        for item in order_command.cancel.keys() {
-            let order_id = order_command.cancel[item].get(1).unwrap().clone();
-            let custom_id = order_command.cancel[item].get(0).unwrap().clone();
-
-            let mut self_clone = self.clone();
-            let handle = spawn(async move {
-                let result = self_clone.cancel_order(&order_id, &custom_id).await;
-                match result {
-                    Ok(_) => {
-                        // result_sd.send(result).await.unwrap();
-                    }
-                    Err(error) => {
-                        // 取消失败去查订单。
-                        let query_rst = self_clone.get_order_detail(&order_id, &custom_id).await;
-                        match query_rst {
-                            Ok(order) => {
-                                self_clone.order_sender.send(order).await.unwrap();
-                            }
-                            Err(_err) => {
-                                // error!("撤单失败,而且查单也失败了,gate_io_swap,oid={}, cid={}。", order_id.clone(), custom_id.clone());
-                                // panic!("撤单失败,而且查单也失败了,gate_io_swap,oid={}, cid={}。", order_id.clone(), custom_id.clone());
-                            }
-                        }
-                        self_clone.error_sender.send(error).await.unwrap();
-                    }
-                }
-            });
-            handles.push(handle)
-        }
-
         // 下单指令
         // 下单指令
         order_command.limits_open.extend(order_command.limits_close.clone());
         order_command.limits_open.extend(order_command.limits_close.clone());
         for item in order_command.limits_open.keys() {
         for item in order_command.limits_open.keys() {
@@ -582,6 +551,45 @@ impl Platform for GateSwap {
             });
             });
             handles.push(handle)
             handles.push(handle)
         }
         }
+        let futures = FuturesUnordered::from_iter(handles);
+        // 等待所有任务完成
+        let _: Result<Vec<_>, _> = futures.try_collect().await;
+        handles.clear();
+
+        // 撤销订单
+        for item in order_command.cancel.keys() {
+            let order_id = order_command.cancel[item].get(1).unwrap().clone();
+            let custom_id = order_command.cancel[item].get(0).unwrap().clone();
+
+            let mut self_clone = self.clone();
+            let handle = spawn(async move {
+                let result = self_clone.cancel_order(&order_id, &custom_id).await;
+                match result {
+                    Ok(_) => {
+                        // result_sd.send(result).await.unwrap();
+                    }
+                    Err(error) => {
+                        // 取消失败去查订单。
+                        let query_rst = self_clone.get_order_detail(&order_id, &custom_id).await;
+                        match query_rst {
+                            Ok(order) => {
+                                self_clone.order_sender.send(order).await.unwrap();
+                            }
+                            Err(_err) => {
+                                // error!("撤单失败,而且查单也失败了,gate_io_swap,oid={}, cid={}。", order_id.clone(), custom_id.clone());
+                                // panic!("撤单失败,而且查单也失败了,gate_io_swap,oid={}, cid={}。", order_id.clone(), custom_id.clone());
+                            }
+                        }
+                        self_clone.error_sender.send(error).await.unwrap();
+                    }
+                }
+            });
+            handles.push(handle)
+        }
+        let futures = FuturesUnordered::from_iter(handles);
+        // 等待所有任务完成
+        let _: Result<Vec<_>, _> = futures.try_collect().await;
+        handles.clear();
 
 
         // 检查订单指令
         // 检查订单指令
         for item in order_command.check.keys() {
         for item in order_command.check.keys() {
@@ -604,10 +612,8 @@ impl Platform for GateSwap {
         }
         }
 
 
         let futures = FuturesUnordered::from_iter(handles);
         let futures = FuturesUnordered::from_iter(handles);
-        spawn(async move {
-            // 等待所有任务完成
-            let _: Result<Vec<_>, _> = futures.try_collect().await;
-        });
+        // 等待所有任务完成
+        let _: Result<Vec<_>, _> = futures.try_collect().await;
     }
     }
 }
 }