Skip to content

Commit

Permalink
Merge pull request #18 from cfhamlet/develop
Browse files Browse the repository at this point in the history
v0.1.10
  • Loading branch information
cfhamlet committed Jul 2, 2019
2 parents 240d97b + 2e7cb5a commit 3036c69
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/os_aio_pod_channel/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.9
0.1.10
39 changes: 23 additions & 16 deletions src/os_aio_pod_channel/channel.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,11 @@ def __init__(self, manager, frontend=None, backend=None, loop=None):
self.loop = asyncio.get_event_loop() if loop is None else loop
self._debug = self.loop.get_debug()
self.events = [] if self._debug else None
self.stop_event = None

def save_event(self, event, e=None):
def save_event(self, event, e=None, stop_event=False):
if stop_event and self.stop_event is None:
self.stop_event = ChannelEvent(event, self.loop.time(), e)
if self._debug:
event = ChannelEvent(event, self.loop.time(), e)
self.events.append(event)
Expand Down Expand Up @@ -314,21 +317,21 @@ async def _do_build_connection(self, bypass=None):
):
data = await self.frontend.read(self._read_max)
except asyncio.TimeoutError as e:
self.save_event(FailEventType.FRONTEND_READ_TIMEOUT, e)
self.save_event(FailEventType.FRONTEND_READ_TIMEOUT, e, stop_event=True)
break
except BaseException as e:
self.save_event(FailEventType.FRONTEND_READ_ERROR, e)
self.save_event(FailEventType.FRONTEND_READ_ERROR, e, stop_event=True)
break
if not data:
self.save_event(EventType.FRONTEND_READ_FINISHED)
self.save_event(EventType.FRONTEND_READ_FINISHED, stop_event=True)
break
try:
data = await middleware.upstream(self, data)
except MiddlewareException as e:
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e)
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e, stop_event=True)
break
except BaseException as e:
self.save_event(ErrorEventType.UNKONW, e)
self.save_event(ErrorEventType.UNKONW, e, stop_event=True)
break
if self.connected:
self._upstream_action = self._do_upstream
Expand All @@ -352,23 +355,23 @@ async def _do_upstream(self, bypass=None):
if data:
await self.backend.flush_write(data)
except Exception as e:
self.save_event(FailEventType.BACKEND_WRITE_ERROR, e)
self.save_event(FailEventType.BACKEND_WRITE_ERROR, e, stop_event=True)
break
try:
data = await self.frontend.read(self._read_max)
except BaseException as e:
self.save_event(FailEventType.FRONTEND_READ_ERROR, e)
self.save_event(FailEventType.FRONTEND_READ_ERROR, e, stop_event=True)
break
if not data:
self.save_event(EventType.FRONTEND_READ_FINISHED)
self.save_event(EventType.FRONTEND_READ_FINISHED, stop_event=True)
break
try:
data = await middleware.upstream(self, data)
except MiddlewareException as e:
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e)
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e, stop_event=True)
break
except BaseException as e:
self.save_event(ErrorEventType.UNKONW, e)
self.save_event(ErrorEventType.UNKONW, e, stop_event=True)
break

self._upstream_action = self._do_close_backend
Expand Down Expand Up @@ -403,24 +406,28 @@ async def _do_downstream(self, bypass=None):
try:
data = await self.backend.read(self._read_max)
except BaseException as e:
self.save_event(FailEventType.BACKEND_READ_ERROR, e)
self.save_event(
FailEventType.BACKEND_READ_ERROR, e, stop_event=True
)
break
if not data:
self.save_event(EventType.BACKEND_READ_FINISHED)
self.save_event(EventType.BACKEND_READ_FINISHED, stop_event=True)
break
try:
data = await middleware.downstream(self, data)
except MiddlewareException as e:
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e)
self.save_event(ErrorEventType.MIDDLEWARE_ERROR, e, stop_event=True)
break
except BaseException as e:
self.save_event(ErrorEventType.UNKONW, e)
self.save_event(ErrorEventType.UNKONW, e, stop_event=True)
break
try:
if data:
await self.frontend.flush_write(data)
except Exception as e:
self.save_event(FailEventType.FRONTEND_WRITE_ERROR, e)
self.save_event(
FailEventType.FRONTEND_WRITE_ERROR, e, stop_event=True
)
break
self._downstream_action = self._do_close_frontend

Expand Down

0 comments on commit 3036c69

Please sign in to comment.