From 771e2edea6c549ecc59debdec740f40b5521a583 Mon Sep 17 00:00:00 2001 From: Martin Teichmann <martin.teichmann@xfel.eu> Date: Thu, 23 May 2024 15:21:46 +0100 Subject: [PATCH] wait for initialization of serial terminal --- ebpfcat/serial.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ebpfcat/serial.py b/ebpfcat/serial.py index 9d98d11..8ef0f03 100644 --- a/ebpfcat/serial.py +++ b/ebpfcat/serial.py @@ -15,7 +15,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -from asyncio import ensure_future, Event, Queue, StreamReader, gather +from asyncio import ensure_future, Event, Future, Queue, StreamReader, gather from .ebpfcat import Device, TerminalVar @@ -45,12 +45,14 @@ class Serial(Device): def write(self, data): self.buffer.put_nowait(data) - def connect(self): - self.task = ensure_future(self.run()) + async def connect(self): + connected = Future() + self.task = ensure_future(self.run(connected)) self.reader = StreamReader() + await connected return self.reader, self - async def run(self): + async def run(self, connected): while not self.init_accept: self.init_request = True await self.data_arrived.wait() @@ -58,6 +60,8 @@ class Serial(Device): while self.init_accept: await self.data_arrived.wait() + connected.set_result(None) + await gather(self.receive(), self.transmit()) async def receive(self): -- GitLab