Factor out common recv code; throw QueueEmpty exception in get_nowait

This commit is contained in:
Alex Forencich
2021-03-21 21:02:28 -07:00
parent f1a89e6c12
commit a66dfea6f7
2 changed files with 14 additions and 20 deletions

View File

@@ -552,8 +552,7 @@ class AxiStreamMonitor(AxiStreamBase):
self.read_queue = []
async def recv(self, compact=True):
frame = await self.queue.get()
def _recv(self, frame, compact=True):
if self.queue.empty():
self.active_event.clear()
self.queue_occupancy_bytes -= len(frame)
@@ -562,17 +561,13 @@ class AxiStreamMonitor(AxiStreamBase):
frame.compact()
return frame
async def recv(self, compact=True):
frame = await self.queue.get()
return self._recv(frame, compact)
def recv_nowait(self, compact=True):
if not self.queue.empty():
frame = self.queue.get_nowait()
if self.queue.empty():
self.active_event.clear()
self.queue_occupancy_bytes -= len(frame)
self.queue_occupancy_frames -= 1
if compact:
frame.compact()
return frame
return None
frame = self.queue.get_nowait()
return self._recv(frame, compact)
async def read(self, count=-1):
while not self.read_queue:

View File

@@ -241,19 +241,18 @@ class StreamMonitor(StreamBase):
_valid_init = None
_ready_init = None
async def recv(self):
item = await self.queue.get()
def _recv(self, item):
if self.queue.empty():
self.active_event.clear()
return item
async def recv(self):
item = await self.queue.get()
return self._recv(item)
def recv_nowait(self):
if not self.queue.empty():
item = self.queue.get_nowait()
if self.queue.empty():
self.active_event.clear()
return item
return None
item = self.queue.get_nowait()
return self._recv(item)
async def wait(self, timeout=0, timeout_unit=None):
if not self.empty():