Administrator
2024-03-17 15199f8e93fe48e6261c99eadf6673d788db3a80
huaxin_client/code_queue_distribute_manager.py
@@ -43,3 +43,48 @@
    # 获取空闲的位置数量
    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
    # 获取代码分配的队列
    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())