|
|
@@ -514,86 +514,71 @@ impl Platform for GateSwap {
|
|
|
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 result_sd = self.order_sender.clone();
|
|
|
- let err_sd = self.error_sender.clone();
|
|
|
- tokio::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) => {
|
|
|
- result_sd.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());
|
|
|
- }
|
|
|
+ let result = self.cancel_order(&order_id, &custom_id).await;
|
|
|
+ match result {
|
|
|
+ Ok(_) => {
|
|
|
+ // result_sd.send(result).await.unwrap();
|
|
|
+ }
|
|
|
+ Err(error) => {
|
|
|
+ // 取消失败去查订单。
|
|
|
+ let query_rst = self.get_order_detail(&order_id, &custom_id).await;
|
|
|
+ match query_rst {
|
|
|
+ Ok(order) => {
|
|
|
+ self.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());
|
|
|
}
|
|
|
- err_sd.send(error).await.unwrap();
|
|
|
}
|
|
|
+ self.error_sender.send(error).await.unwrap();
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
// 下单指令
|
|
|
order_command.limits_open.extend(order_command.limits_close.clone());
|
|
|
for item in order_command.limits_open.keys() {
|
|
|
let ts = trace_stack.clone();
|
|
|
|
|
|
- let amount = Decimal::from_str(&*order_command.limits_open[item].get(0).unwrap().clone()).unwrap().clone();
|
|
|
+ let amount = Decimal::from_str(&*order_command.limits_open[item].get(0).unwrap().clone()).unwrap();
|
|
|
let side = order_command.limits_open[item].get(1).unwrap().clone();
|
|
|
let price = Decimal::from_str(&*order_command.limits_open[item].get(2).unwrap().clone()).unwrap();
|
|
|
let cid = order_command.limits_open[item].get(3).unwrap().clone();
|
|
|
|
|
|
- let mut self_clone = self.clone();
|
|
|
- let result_sd = self.order_sender.clone();
|
|
|
- let err_sd = self.error_sender.clone();
|
|
|
- tokio::spawn(async move {
|
|
|
- // order_name: [数量,方向,价格,c_id]
|
|
|
- info!("{}", ts.to_string());
|
|
|
- TraceStack::show_delay(&ts.ins);
|
|
|
- let result = self_clone.take_order(&cid, &side, price, amount).await;
|
|
|
- match result {
|
|
|
- Ok(mut result) => {
|
|
|
- result.trace_stack = ts;
|
|
|
-
|
|
|
- result_sd.send(result).await.unwrap();
|
|
|
- }
|
|
|
- Err(error) => {
|
|
|
- let mut err_order = Order::new();
|
|
|
- err_order.custom_id = cid.clone();
|
|
|
- err_order.status = "REMOVE".to_string();
|
|
|
+ // order_name: [数量,方向,价格,c_id]
|
|
|
+ info!("{}", ts.to_string());
|
|
|
+ TraceStack::show_delay(&ts.ins);
|
|
|
+ let result = self.take_order(&cid, &side, price, amount).await;
|
|
|
+ match result {
|
|
|
+ Ok(mut result) => {
|
|
|
+ result.trace_stack = ts;
|
|
|
|
|
|
- result_sd.send(err_order).await.unwrap();
|
|
|
- err_sd.send(error).await.unwrap();
|
|
|
- }
|
|
|
+ self.order_sender.send(result).await.unwrap();
|
|
|
}
|
|
|
- });
|
|
|
+ Err(error) => {
|
|
|
+ let mut err_order = Order::new();
|
|
|
+ err_order.custom_id = cid.clone();
|
|
|
+ err_order.status = "REMOVE".to_string();
|
|
|
+
|
|
|
+ self.order_sender.send(err_order).await.unwrap();
|
|
|
+ self.error_sender.send(error).await.unwrap();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
// 检查订单指令
|
|
|
for item in order_command.check.keys() {
|
|
|
let order_id = order_command.check[item].get(1).unwrap().clone();
|
|
|
let custom_id = order_command.check[item].get(0).unwrap().clone();
|
|
|
|
|
|
- let mut self_clone = self.clone();
|
|
|
- let result_sd = self.order_sender.clone();
|
|
|
- let err_sd = self.error_sender.clone();
|
|
|
- tokio::spawn(async move {
|
|
|
- let result = self_clone.get_order_detail(&order_id, &custom_id).await;
|
|
|
- match result {
|
|
|
- Ok(result) => {
|
|
|
- result_sd.send(result).await.unwrap();
|
|
|
- }
|
|
|
- Err(error) => {
|
|
|
- err_sd.send(error).await.unwrap();
|
|
|
- }
|
|
|
+ let result = self.get_order_detail(&order_id, &custom_id).await;
|
|
|
+ match result {
|
|
|
+ Ok(result) => {
|
|
|
+ self.order_sender.send(result).await.unwrap();
|
|
|
+ }
|
|
|
+ Err(error) => {
|
|
|
+ self.error_sender.send(error).await.unwrap();
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|