mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-14 21:52:18 -06:00
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
1 changed files with 7 additions and 2 deletions
|
@ -562,7 +562,7 @@ class EventListener:
|
||||||
"""
|
"""
|
||||||
return self._queue.empty()
|
return self._queue.empty()
|
||||||
|
|
||||||
def clear(self) -> None:
|
def clear(self) -> List[Message]:
|
||||||
"""
|
"""
|
||||||
Clear this listener of all pending events.
|
Clear this listener of all pending events.
|
||||||
|
|
||||||
|
@ -570,17 +570,22 @@ class EventListener:
|
||||||
pending FIFO queue synchronously. It can be also be used to
|
pending FIFO queue synchronously. It can be also be used to
|
||||||
manually clear any pending events, if desired.
|
manually clear any pending events, if desired.
|
||||||
|
|
||||||
|
:return: The cleared events, if any.
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
Take care when discarding events. Cleared events will be
|
Take care when discarding events. Cleared events will be
|
||||||
silently tossed on the floor. All events that were ever
|
silently tossed on the floor. All events that were ever
|
||||||
accepted by this listener are visible in `history()`.
|
accepted by this listener are visible in `history()`.
|
||||||
"""
|
"""
|
||||||
|
events = []
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
self._queue.get_nowait()
|
events.append(self._queue.get_nowait())
|
||||||
except asyncio.QueueEmpty:
|
except asyncio.QueueEmpty:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
return events
|
||||||
|
|
||||||
def __aiter__(self) -> AsyncIterator[Message]:
|
def __aiter__(self) -> AsyncIterator[Message]:
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue