From db137e70dcf67de26828e17c2d3dc9d21e971eb0 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 9 Apr 2020 13:15:47 +1000 Subject: extmod/uasyncio: Add Loop.new_event_loop method. This commit adds Loop.new_event_loop() which is used to reset the singleton event loop. This functionality is put here instead of in Loop.close() to make it possible to write code that is compatible with CPython. --- extmod/uasyncio/core.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'extmod') diff --git a/extmod/uasyncio/core.py b/extmod/uasyncio/core.py index e2f64119c..689487d36 100644 --- a/extmod/uasyncio/core.py +++ b/extmod/uasyncio/core.py @@ -132,13 +132,6 @@ class IOQueue: ################################################################################ # Main run loop -# TaskQueue of Task instances -_task_queue = TaskQueue() - -# Task queue and poller for stream IO -_io_queue = IOQueue() - - # Ensure the awaitable is a task def _promote_to_task(aw): return aw if isinstance(aw, Task) else create_task(aw) @@ -269,3 +262,16 @@ class Loop: # The runq_len and waitq_len arguments are for legacy uasyncio compatibility def get_event_loop(runq_len=0, waitq_len=0): return Loop + + +def new_event_loop(): + global _task_queue, _io_queue + # TaskQueue of Task instances + _task_queue = TaskQueue() + # Task queue and poller for stream IO + _io_queue = IOQueue() + return Loop + + +# Initialise default event loop +new_event_loop() -- cgit v1.2.3