from .chs_type_spec import type_spec_chs import logging logger = logging.getLogger('chs_manager') class chs_manager(object): def __init__(self): self.channels = {} pass def add(self, name, card_type, spec, data, end_pos): key_gen = lambda card_type, spec: f'{spec}-{card_type}' key = key_gen(card_type, spec) if key in self.channels: subch = self.channels[key] else: subch = type_spec_chs(card_type, spec) self.channels[key] = subch subch.add(name, data, end_pos) def optimize(self): for key, item in self.channels.items(): item.optimize() def cur_speed(self): total = 0 for key, item in self.channels.items(): total += item.cur_speed() logger.debug(f'total speed = {total}') return total def normal_speed(self): total = 0 for key, item in self.channels.items(): total += item.normal_speed() logger.debug(f'normal speed = {total}') return total def get_reckon(self): result = {} for key, item in self.channels.items(): reckons = item.get_reckon() for ch_name, speed in reckons.items(): prefix = f'{ch_name}-{key}' result[prefix] = speed return result pass