Skip to content

Commit 6bfebc7

Browse files
committed
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 <[email protected]> Reviewed-by: Hanna Reitz <[email protected]> Reviewed-by: Paolo Bonzini <[email protected]> Message-id: [email protected] Signed-off-by: John Snow <[email protected]>
1 parent 16cce72 commit 6bfebc7

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

python/qemu/aqmp/events.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -562,25 +562,30 @@ def empty(self) -> bool:
562562
"""
563563
return self._queue.empty()
564564

565-
def clear(self) -> None:
565+
def clear(self) -> List[Message]:
566566
"""
567567
Clear this listener of all pending events.
568568
569569
Called when an `EventListener` is being unregistered, this clears the
570570
pending FIFO queue synchronously. It can be also be used to
571571
manually clear any pending events, if desired.
572572
573+
:return: The cleared events, if any.
574+
573575
.. warning::
574576
Take care when discarding events. Cleared events will be
575577
silently tossed on the floor. All events that were ever
576578
accepted by this listener are visible in `history()`.
577579
"""
580+
events = []
578581
while True:
579582
try:
580-
self._queue.get_nowait()
583+
events.append(self._queue.get_nowait())
581584
except asyncio.QueueEmpty:
582585
break
583586

587+
return events
588+
584589
def __aiter__(self) -> AsyncIterator[Message]:
585590
return self
586591

0 commit comments

Comments
 (0)