From cbe19ea6066a600cbd0b5110db5d43f8252d14a8 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 13 六月 2024 11:23:53 +0800
Subject: [PATCH] L撤成交进度相关改进

---
 huaxin_client/code_queue_distribute_manager.py |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/huaxin_client/code_queue_distribute_manager.py b/huaxin_client/code_queue_distribute_manager.py
index 0e033ca..b91cbc6 100644
--- a/huaxin_client/code_queue_distribute_manager.py
+++ b/huaxin_client/code_queue_distribute_manager.py
@@ -1,6 +1,7 @@
 """
 浠g爜闃熷垪绠$悊
 """
+import copy
 
 
 class CodeQueueDistributeManager:
@@ -43,3 +44,57 @@
     # 鑾峰彇绌洪棽鐨勪綅缃暟閲�
     def get_free_queue_count(self):
         return len(self.queue_list) - len(self.distibuted_code_queue_dict.keys())
+
+
+# 鍥炶皟瀵硅薄鍒嗛厤
+class CodeDataCallbackDistributeManager:
+    # queue_list
+    def __init__(self, callback_list: list):
+        flist = []
+        for callback in callback_list:
+            flist.append((id(callback), callback))
+        self.callback_list = flist
+        self.distibuted_code_callback_dict = {}
+
+    # 鑾峰彇鍙敤鐨勯槦鍒�
+    def get_available_callback(self):
+        distibuted_callbacks_ids = set()
+        for code in self.distibuted_code_callback_dict:
+            distibuted_callbacks_ids.add(self.distibuted_code_callback_dict[code][0])
+        for callback in self.callback_list:
+            if callback[0] not in distibuted_callbacks_ids:
+                return callback
+        return None
+
+    # 涓轰唬鐮佸垎閰嶉槦鍒�
+    def distribute_callback(self, code):
+        if code in self.distibuted_code_callback_dict:
+            return self.distibuted_code_callback_dict.get(code)
+        callback_info = self.get_available_callback()
+        if not callback_info:
+            raise Exception("鏃犲彲鐢ㄧ殑鍥炶皟瀵硅薄")
+        self.distibuted_code_callback_dict[code] = callback_info
+        return callback_info
+
+    # 鑾峰彇浠g爜鍒嗛厤鐨勯槦鍒�
+    def get_distributed_callback(self, code):
+        if code in self.distibuted_code_callback_dict:
+            return self.distibuted_code_callback_dict.get(code)[1]
+        else:
+            return None
+
+    def release_distribute_callback(self, code):
+        if code in self.distibuted_code_callback_dict:
+            self.distibuted_code_callback_dict.pop(code)
+
+    # 鑾峰彇绌洪棽鐨勪綅缃暟閲�
+    def get_free_queue_count(self):
+        return len(self.callback_list) - len(self.distibuted_code_callback_dict.keys())
+
+    def get_distributed_codes(self):
+        """
+        鑾峰彇宸茬粡鍒嗛厤鐨勪唬鐮�
+        @return:
+        """
+        codes = self.distibuted_code_callback_dict.keys()
+        return copy.deepcopy(codes)

--
Gitblit v1.8.0