diff options
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/platform.py')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/platform.py | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/platform.py b/packages/meshbay-node/src/meshbay_node/platform.py index 2eab9e1..351289f 100644 --- a/packages/meshbay-node/src/meshbay_node/platform.py +++ b/packages/meshbay-node/src/meshbay_node/platform.py @@ -27,25 +27,23 @@ def force_utf8_stdio() -> None: # ── Event loop ─────────────────────────────────────────────────────────────── -def use_compatible_event_loop() -> None: +def configure_event_loop() -> None: """ - On Windows, select the SelectorEventLoop: aiortc's ICE stack does not - complete a loopback DataChannel handshake on the default ProactorEventLoop. + The daemon runs on Windows' default ProactorEventLoop: verified end to end + (a live browser peer connecting, an index sync, a file download and an + ffmpeg-transcoded video stream). aiortc only ever hangs on it in the + *same-process loopback* the tests use, which the test suite handles on its + own (repo-root conftest). - Cost: SelectorEventLoop cannot spawn subprocesses on Windows, so ffmpeg - streaming (asyncio.create_subprocess_exec in webrtc_server.py) does not work - under it. The video path needs a thread-based runner on Windows — tracked - for the port. No effect off Windows. - - Whether the hang is real for a live peer (vs. the same-process loopback in - the tests) is still being established: set MESHBAY_NODE_EVENT_LOOP=proactor - to keep the default loop and check. + Escape hatch, opt-in only: MESHBAY_NODE_EVENT_LOOP=selector switches to the + SelectorEventLoop. That fixes aiortc-in-one-process but breaks ffmpeg + (SelectorEventLoop cannot spawn subprocesses on Windows), so it is not the + default and probably never should be. """ if sys.platform != "win32": return - if os.environ.get("MESHBAY_NODE_EVENT_LOOP", "").lower() == "proactor": - return - asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + if os.environ.get("MESHBAY_NODE_EVENT_LOOP", "").lower() == "selector": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) # ── Directories ────────────────────────────────────────────────────────────── |