pub struct OutputStream { /* private fields */ }Expand description
Stream of output chunks from a process
Implementations§
Source§impl OutputStream
impl OutputStream
Sourcepub async fn next(&mut self) -> Option<OutputChunk>
pub async fn next(&mut self) -> Option<OutputChunk>
Receive the next chunk
Sourcepub fn exit_signal(&self) -> Option<String>
pub fn exit_signal(&self) -> Option<String>
Signal reported by the native child, available once it exits. Ordinary exit codes above 128 are not mistaken for signals.
Sourcepub fn pid(&self) -> Option<u32>
pub fn pid(&self) -> Option<u32>
Process id of the streamed command, as currently known.
The child is spawned by a background task, so this is None for the
short window between StreamingRunner::stream returning and the spawn
completing, and stays None if the spawn failed. From the first
delivered chunk onwards it is set, and it remains readable after the
process has exited. Use wait_for_pid to avoid
the startup window.
Sourcepub async fn wait_for_pid(&mut self) -> Option<u32>
pub async fn wait_for_pid(&mut self) -> Option<u32>
Process id of the streamed command, waiting for the spawn to complete.
Resolves as soon as the child exists, and returns None if the process
could never be spawned. This is the streaming counterpart of awaiting a
stream before reading runner.pid in JavaScript.
Sourcepub fn kill(&mut self)
pub fn kill(&mut self)
Stop the process using the configured kill signal (default SIGTERM).
This can be called from inside the consumption loop to stop a
long-running or endless process; a terminating OutputChunk::Exit is
still delivered afterwards.
Sourcepub fn kill_with(&mut self, signal: &str)
pub fn kill_with(&mut self, signal: &str)
Stop the process using an explicit signal, overriding the configured kill signal for this call.
Sourcepub async fn collect(self) -> (Vec<u8>, Vec<u8>, i32)
pub async fn collect(self) -> (Vec<u8>, Vec<u8>, i32)
Collect all remaining output into vectors
Sourcepub async fn collect_stdout(self) -> Vec<u8> ⓘ
pub async fn collect_stdout(self) -> Vec<u8> ⓘ
Collect stdout only, discarding stderr
Trait Implementations§
Source§impl AsyncIterator for OutputStream
impl AsyncIterator for OutputStream
Source§impl Drop for OutputStream
impl Drop for OutputStream
Auto Trait Implementations§
impl !RefUnwindSafe for OutputStream
impl !UnwindSafe for OutputStream
impl Freeze for OutputStream
impl Send for OutputStream
impl Sync for OutputStream
impl Unpin for OutputStream
impl UnsafeUnpin for OutputStream
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.