def music_constructor(cfg, logger, owner: Owner, old=None): def create(): if name not in TYPE_MAP: cls = DummyControl owner.log('Wrong type of player controller - \'{}\''.format(name), logger_.ERROR) else: cls = TYPE_MAP[name] log = logger.add(name.upper()) try: return cls(name, cfg['music'], log, owner=owner) except Exception as e: log('Init Error: {}'.format(e), logger_.CRIT) return DummyControl(owner=owner) if not (old is None or isinstance(old, (BaseControl, DummyControl))): raise TypeError('Wrong type: {}'.format(type(old))) name = cfg.gt('music', 'type', '').lower() if old: if old.name == name: old.reload() return old else: owner.join_thread(old) old = create() old.start() else: old = create() return old
def server_constructor(cfg, logger, owner: Owner, old=None) -> MDTServer or DummyServer: on = not cfg.gt('smarthome', 'disable_server') if old is None: old = MDTServer(cfg=cfg, log=logger.add('Server'), owner=owner) if on else DummyServer() if isinstance(old, DummyServer): old = MDTServer(cfg=cfg, log=logger.add('Server'), owner=owner) if on else old old.start() elif isinstance(old, MDTServer): if not on: owner.join_thread(old) old = DummyServer() else: raise TypeError('Wrong type: {}'.format(type(old))) return old