diff options
author | John Snow <jsnow@redhat.com> | 2021-09-22 20:49:24 -0400 |
---|---|---|
committer | John Snow <jsnow@redhat.com> | 2021-10-12 12:22:10 -0400 |
commit | 6bfebc7306e42910cd33553d9ed385ef475d8196 (patch) | |
tree | 814bf3d05b53fc1601d5aff291b4310db6893961 /python | |
parent | 16cce725ed87e3ed5901c93e61514840c989216a (diff) |
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.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/python/qemu/aqmp/events.py b/python/qemu/aqmp/events.py index 271899f6b8..5f7150c78d 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 |