Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit 45fa1a1

Browse files
committed
nvdemux: user anyio.Event
1 parent b544d27 commit 45fa1a1

1 file changed

Lines changed: 10 additions & 13 deletions

File tree

  • packages/jumpstarter-driver-pyserial/jumpstarter_driver_pyserial/nvdemux

packages/jumpstarter-driver-pyserial/jumpstarter_driver_pyserial/nvdemux/driver.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import threading
21
import time
32
from contextlib import asynccontextmanager
43
from dataclasses import dataclass, field
54
from typing import Optional
65

7-
from anyio import sleep
6+
from anyio import Event, fail_after, sleep
87
from anyio._backends._asyncio import StreamReaderWrapper, StreamWriterWrapper
98
from serial_asyncio import open_serial_connection
109

@@ -50,7 +49,7 @@ class NVDemuxSerial(Driver):
5049
poll_interval: float = field(default=1.0)
5150

5251
# Internal state (not init params)
53-
_ready: threading.Event = field(init=False, default_factory=threading.Event)
52+
_ready: Event = field(init=False, default_factory=Event)
5453
_registered: bool = field(init=False, default=False)
5554

5655
def __post_init__(self):
@@ -106,16 +105,14 @@ async def connect(self):
106105
Waits for the demuxer to be ready (device connected and pts path discovered)
107106
before opening the serial connection.
108107
"""
109-
# Wait for ready state
110-
start_time = time.monotonic()
111-
while not self._ready.is_set():
112-
elapsed = time.monotonic() - start_time
113-
if elapsed >= self.timeout:
114-
raise TimeoutError(
115-
f"Timeout waiting for demuxer to become ready (device pattern: {self.device})"
116-
)
117-
# Use a short sleep to allow checking ready state
118-
await sleep(0.1)
108+
# Wait for ready state with timeout
109+
try:
110+
with fail_after(self.timeout):
111+
await self._ready.wait()
112+
except TimeoutError:
113+
raise TimeoutError(
114+
f"Timeout waiting for demuxer to become ready (device pattern: {self.device})"
115+
) from None
119116

120117
# Get the current pts path from manager (retry until timeout)
121118
manager = DemuxerManager.get_instance()

0 commit comments

Comments
 (0)