SignalLauncher.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import logging
  2. from kalliope import Utils
  3. from kalliope.signals.order import Order
  4. logging.basicConfig()
  5. logger = logging.getLogger("kalliope")
  6. class SignalLauncher:
  7. # keep a list of instantiated signals
  8. list_launched_signals = list()
  9. def __init__(self):
  10. pass
  11. @classmethod
  12. def launch_signal_class_by_name(cls, signal_name, settings=None):
  13. """
  14. load the signal class from the given name, pass the brain and settings to the signal
  15. :param signal_name: name of the signal class to load
  16. :param settings: Settings Object
  17. """
  18. signal_folder = None
  19. if settings.resources:
  20. signal_folder = settings.resources.signal_folder
  21. launched_signal = Utils.get_dynamic_class_instantiation(package_name="signals",
  22. module_name=signal_name,
  23. resources_dir=signal_folder)
  24. cls.add_launched_signals_to_list(launched_signal)
  25. return launched_signal
  26. @classmethod
  27. def add_launched_signals_to_list(cls, signal):
  28. cls.list_launched_signals.append(signal)
  29. @classmethod
  30. def get_launched_signals_list(cls):
  31. return cls.list_launched_signals
  32. @classmethod
  33. def get_order_instance(cls):
  34. """
  35. Return the Order instance from the list of launched signals if exist
  36. :return:
  37. """
  38. for signal in cls.list_launched_signals:
  39. if isinstance(signal, Order):
  40. return signal
  41. return None