Esempio n. 1
0
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
Esempio n. 2
0
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