mirror of https://gitee.com/openkylin/qemu.git
python/aqmp: Return cleared events from EventListener.clear()
This serves two purposes: (1) It is now possible to discern whether or not clear() removed any event(s) from the queue with absolute certainty, and (2) It is now very easy to get a List of all pending events in one chunk, which is useful for the sync bridge. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20210923004938.3999963-4-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
16cce725ed
commit
6bfebc7306
|
@ -562,7 +562,7 @@ def empty(self) -> bool:
|
|||
"""
|
||||
return self._queue.empty()
|
||||
|
||||
def clear(self) -> None:
|
||||
def clear(self) -> List[Message]:
|
||||
"""
|
||||
Clear this listener of all pending events.
|
||||
|
||||
|
@ -570,17 +570,22 @@ def clear(self) -> None:
|
|||
pending FIFO queue synchronously. It can be also be used to
|
||||
manually clear any pending events, if desired.
|
||||
|
||||
:return: The cleared events, if any.
|
||||
|
||||
.. warning::
|
||||
Take care when discarding events. Cleared events will be
|
||||
silently tossed on the floor. All events that were ever
|
||||
accepted by this listener are visible in `history()`.
|
||||
"""
|
||||
events = []
|
||||
while True:
|
||||
try:
|
||||
self._queue.get_nowait()
|
||||
events.append(self._queue.get_nowait())
|
||||
except asyncio.QueueEmpty:
|
||||
break
|
||||
|
||||
return events
|
||||
|
||||
def __aiter__(self) -> AsyncIterator[Message]:
|
||||
return self
|
||||
|
||||
|
|
Loading…
Reference in New Issue