chs_manager.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from .chs_type_spec import type_spec_chs
  2. import logging
  3. logger = logging.getLogger('speedctl')
  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. key_gen = lambda card_type,spec: f'{spec}-{card_type}'
  10. key = key_gen(card_type,spec)
  11. if key in self.channels:
  12. subch = self.channels[key]
  13. else:
  14. subch = type_spec_chs(card_type, spec)
  15. self.channels[key] = subch
  16. subch.add(name, data, end_pos)
  17. def optimize(self):
  18. for key,item in self.channels.items():
  19. item.optimize()
  20. def cur_speed(self):
  21. total = 0
  22. for key,item in self.channels.items():
  23. total += item.cur_speed()
  24. logger.debug(f'total = {total}')
  25. return total
  26. def get_reckon(self):
  27. result = {}
  28. for key,item in self.channels.items():
  29. reckons = item.get_reckon()
  30. for ch_name, speed in reckons.items():
  31. prefix = f'{ch_name}-{key}'
  32. result[prefix] = speed
  33. return result
  34. pass