コード例 #1
0
def parse():
    while True:
        if abort:
            return
        try:
            msg = pull.recv_json()
            logger.d('pull received message = {}'.format(msg))

            func = msg.get('func')
            if func == 'play':
                q.put({'cmd': s.play, 'args': msg.get('data')})
            elif func == 'stop':
                q.put({'cmd': s.stop, 'args': msg.get('data')})
            elif func == 'volume':
                q.put({'cmd': s.volume, 'args': msg.get('data')})
            elif func == 'pause':
                q.put({'cmd': s.pause, 'args': msg.get('data')})
            elif func == 'resume':
                q.put({'cmd': s.resume, 'args': msg.get('data')})
            else:
                logger.w('not found function.')

        except KeyboardInterrupt:
            raise
        except Exception:
            logger.e('Unexpected error: {}'.format(str(sys.exc_info()[0])))
            logger.e(traceback.format_exc())
コード例 #2
0
def run_pull():
    logger.d('connecting tcp://localhost:{}'.format(pull_port))
    pull.bind('tcp://*:{}'.format(pull_port))
    pool = Pool(1)
    pool.apply_async(parse)
    s.run()  # block
    logger.d('block out pool.')
    pool.close()
    pool.terminate()
    pool.join()
    pull.close()
コード例 #3
0
    def run(self):
        self.run_async()

        try:
            while True:
                if self.aborted:
                    break
                time.sleep(0.5)

        except KeyboardInterrupt:
            logger.d('keyboard Ctrl+C in simple_run_loop.run()')
            self.on_keyboard_interrupt()
            raise
        except Exception:
            logger.e('Unexpected error: {}'.format(str(sys.exc_info()[0])))
            logger.e(traceback.format_exc())
            raise
        finally:
            self.aborted = True
            logger.i('finish run')
コード例 #4
0
    def __message_loop(self):
        try:
            logger.d('start runloop')
            self.on_start_runloop()
            while True:
                try:
                    if self.aborted:
                        return

                    self.on_do_function()

                except Exception as exception:
                    ret = self.on_exception_at_runloop(exception)
                    if (ret == SimpleRunLoop.CONTINUE):
                        logger.d('continue runloop')
                        continue
                    else:
                        logger.e('Unexpected error: {}'.format(
                            str(sys.exc_info()[0])))
                        logger.e(traceback.format_exc())
                        logger.e('exit runloop by exception')
                        return

        finally:
            self.run_loop_finished = True
            self.on_finish_runloop()
            logger.d('finished runloop')
コード例 #5
0
 def on_finish_runloop(self):
     self.all_stop()
     logger.d('finish runloop')
コード例 #6
0
 def on_start_runloop(self):
     logger.d('start runloop')
     pass