mirror of
https://github.com/asciinema/asciinema.git
synced 2025-12-16 11:48:13 +01:00
Silently drain write queue when write error happens during recording
This commit is contained in:
@@ -36,8 +36,11 @@ class file_writer:
|
||||
self.on_error("Output pipe reopened successfully")
|
||||
self.file.write(data) # type: ignore
|
||||
else:
|
||||
self.on_error("Output pipe broken")
|
||||
self.on_error("Output pipe broken, recording suspended")
|
||||
raise e
|
||||
except IOError as e:
|
||||
self.on_error("Write error, recording suspended")
|
||||
raise e
|
||||
|
||||
|
||||
def noop(_: Any) -> None:
|
||||
|
||||
@@ -132,16 +132,20 @@ class async_writer(async_worker):
|
||||
self.enqueue([ts, "o", data])
|
||||
|
||||
def run(self) -> None:
|
||||
with self.writer as w:
|
||||
event: Tuple[float, str, Any]
|
||||
for event in iter(self.queue.get, None):
|
||||
assert event is not None
|
||||
ts, etype, data = event
|
||||
try:
|
||||
with self.writer as w:
|
||||
event: Tuple[float, str, Any]
|
||||
for event in iter(self.queue.get, None):
|
||||
assert event is not None
|
||||
ts, etype, data = event
|
||||
|
||||
if etype == "o":
|
||||
w.write_stdout(self.time_offset + ts, data)
|
||||
elif etype == "i":
|
||||
w.write_stdin(self.time_offset + ts, data)
|
||||
if etype == "o":
|
||||
w.write_stdout(self.time_offset + ts, data)
|
||||
elif etype == "i":
|
||||
w.write_stdin(self.time_offset + ts, data)
|
||||
except IOError:
|
||||
for event in iter(self.queue.get, None):
|
||||
pass
|
||||
|
||||
|
||||
class async_notifier(async_worker):
|
||||
|
||||
Reference in New Issue
Block a user