Exemplo n.º 1
0
 async def confirm_workflow(self) -> None:
     try:
         workflow.onstart(self.workflow)
         await self.confirm_layout()
     finally:
         workflow.onclose(self.workflow)
         self.workflow = None
Exemplo n.º 2
0
async def session_handler(iface, sid):
    reader = None
    ctx = Context(iface, sid)
    while True:
        try:
            # wait for new message, if needed, and find handler
            if not reader:
                reader = ctx.getreader()
                await reader.aopen()
            try:
                handler, args = workflow_handlers[reader.type]
            except KeyError:
                handler, args = unexpected_msg, ()

            w = handler(ctx, reader, *args)
            try:
                workflow.onstart(w)
                await w
            finally:
                workflow.onclose(w)

        except UnexpectedMessageError as exc:
            # retry with opened reader from the exception
            reader = exc.reader
            continue
        except FailureError as exc:
            # we log FailureError as warning, not as exception
            log.warning(__name__, 'failure: %s', exc.message)
        except Exception as exc:
            # sessions are never closed by raised exceptions
            log.exception(__name__, exc)

        # read new message in next iteration
        reader = None
Exemplo n.º 3
0
 async def confirm(self) -> None:
     confirmed = False
     try:
         confirmed = await self.confirm_layout()
     finally:
         self.confirmed = confirmed
         workflow.onclose(self.task)
Exemplo n.º 4
0
async def session_handler(iface: WireInterface, sid: int) -> None:
    reader = None
    ctx = Context(iface, sid)
    while True:
        try:
            # wait for new message, if needed, and find handler
            if not reader:
                reader = ctx.make_reader()
                await reader.aopen()
            try:
                handler, args = workflow_handlers[reader.type]
            except KeyError:
                handler, args = unexpected_msg, ()

            m = utils.unimport_begin()
            w = handler(ctx, reader, *args)
            try:
                workflow.onstart(w)
                await w
            finally:
                workflow.onclose(w)
                utils.unimport_end(m)

        except UnexpectedMessageError as exc:
            # retry with opened reader from the exception
            reader = exc.reader
            continue
        except Error as exc:
            # we log wire.Error as warning, not as exception
            if __debug__:
                log.warning(__name__, "failure: %s", exc.message)
        except Exception as exc:
            # sessions are never closed by raised exceptions
            if __debug__:
                log.exception(__name__, exc)

        # read new message in next iteration
        reader = None
Exemplo n.º 5
0
 def kill(self) -> None:
     if self.task is not None:
         workflow.onclose(self.task)
         loop.close(self.task)
         self.task = None