struct PtyReadChunk {
data: Vec<u8>,
osc_events: Vec<OscEvent>,
ack: Option<Sender<()>>,
}Expand description
One PTY read’s worth of already-OSC-cleaned output, on its way from the
blocking read loop to the coalescing flusher (start(), below). See
docs/reports/REPORT_RENDERER_CPU_UNBATCHED_PTY_OUTPUT_2026_09_11.md.
Fields§
§data: Vec<u8>§osc_events: Vec<OscEvent>§ack: Option<Sender<()>>Flush barrier. When set, the flusher signals it AFTER committing the batch this chunk lands in — so a sender that enqueues a barrier and awaits it knows everything queued before it has reached the FileStore and the broker.
Exists because “the flusher task ended” is NOT a usable completion
signal on Windows: ConPTY’s console host outlives the direct child, so
the read loop never sees EOF, never drops its sender, and the channel
never closes. Waiting on the task therefore always burned the full
FLUSHER_DRAIN_TIMEOUT (see its doc comment) even though the flusher
itself had been idle for most of that second. A barrier asks the
question actually being asked — “is prior output committed yet?” —
and is answered as soon as the batch it lands in commits.
Auto Trait Implementations§
impl !RefUnwindSafe for PtyReadChunk
impl !UnwindSafe for PtyReadChunk
impl Freeze for PtyReadChunk
impl Send for PtyReadChunk
impl Sync for PtyReadChunk
impl Unpin for PtyReadChunk
impl UnsafeUnpin for PtyReadChunk
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more