async def confirm_workflow(self) -> None: try: workflow.onstart(self.workflow) await self.confirm_layout() finally: workflow.onclose(self.workflow) self.workflow = None
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
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
def fork(self) -> None: self.deadline_ms = utime.ticks_ms() + _CONFIRM_STATE_TIMEOUT_MS self.task = self.confirm() workflow.onstart(self.task) loop.schedule(self.task)