Ejemplo n.º 1
0
def main(mycfg):
    logging.info("# start system")

    init = Init(mycfg=mycfg)
    init.check()
    init.close()
    logging.info("# finish initialize")
    """ Class """
    obj = EmptyObject()
    obj.neko = EtherInterface(mycfg=mycfg)
    obj.tip = TipnemControl(mycfg=mycfg)
    obj.income = IncomingPolling(mycfg=mycfg)
    obj.rest = RestApi(mycfg=mycfg)
    """ import object """
    obj.neko.obj = obj
    obj.tip.obj = obj
    obj.income.obj = obj
    obj.rest.obj = obj
    """ threading start """
    obj.income.start()
    obj.rest.start()
    obj.tip.start_control()  # blocking main thread
    """ check """
    count = 0
    while True:
        try:
            count += 1
            time.sleep(1)
            if mycfg.stop_signal:
                raise Exception("kill signal")
            if count % 1800 == 0:
                logging.info("# checking living %d" % count)

        except Exception as e:
            logging.info("# input stop signal")
            while True:
                mycfg.stop_signal = True
                time.sleep(1)
                for name in mycfg.stop_need_obj:
                    if name not in mycfg.stop_ok:
                        logging.info("# wait for %s" % name)
                        break
                else:
                    logging.info("# exit ok!")
                    exit(0)