aboutsummaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2021-09-22 20:49:24 -0400
committerJohn Snow <jsnow@redhat.com>2021-10-12 12:22:10 -0400
commit6bfebc7306e42910cd33553d9ed385ef475d8196 (patch)
tree814bf3d05b53fc1601d5aff291b4310db6893961 /python
parent16cce725ed87e3ed5901c93e61514840c989216a (diff)
downloadqemu-6bfebc7306e42910cd33553d9ed385ef475d8196.zip
qemu-6bfebc7306e42910cd33553d9ed385ef475d8196.tar.gz
qemu-6bfebc7306e42910cd33553d9ed385ef475d8196.tar.bz2
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>
Diffstat (limited to 'python')
-rw-r--r--python/qemu/aqmp/events.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/python/qemu/aqmp/events.py b/python/qemu/aqmp/events.py
index 271899f..5f7150c 100644
--- a/python/qemu/aqmp/events.py
+++ b/python/qemu/aqmp/events.py
@@ -562,7 +562,7 @@ class EventListener:
"""
return self._queue.empty()
- def clear(self) -> None:
+ def clear(self) -> List[Message]:
"""
Clear this listener of all pending events.
@@ -570,17 +570,22 @@ class EventListener:
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