chs_manager.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from .chs_type_spec import type_spec_chs
  2. import logging
  3. logger = logging.getLogger('chs_manager')
  4. class chs_manager(object):
  5. def __init__(self):
  6. self.channels = {}
  7. pass
  8. def add(self,name, card_type, spec, data,end_pos):
  9. if card_type != 4 or spec != 100:
  10. return
  11. key_gen = lambda card_type,spec: f'{spec}-{card_type}'
  12. key = key_gen(card_type,spec)
  13. if key in self.channels:
  14. subch = self.channels[key]
  15. else:
  16. subch = type_spec_chs(card_type, spec)
  17. self.channels[key] = subch
  18. subch.add(name, data, end_pos)
  19. def optimize(self):
  20. for key,item in self.channels.items():
  21. item.optimize()
  22. def cur_speed(self):
  23. total = 0
  24. for key,item in self.channels.items():
  25. total += item.cur_speed()
  26. logger.debug(f'total = {total}')
  27. return total
  28. def get_reckon(self):
  29. result = {}
  30. for key,item in self.channels.items():
  31. reckons = item.get_reckon()
  32. for ch_name, speed in reckons.items():
  33. prefix = f'{ch_name}-{key}'
  34. result[prefix] = speed
  35. return result
  36. pass