BroadcastOutputStream

Struct BroadcastOutputStream 

Source
pub struct BroadcastOutputStream { /* private fields */ }
Expand description

The output stream from a process. Either representing stdout or stderr.

This is the broadcast variant, allowing for multiple simultaneous consumers with the downside of inducing memory allocations not required when only one consumer is listening. For that case, prefer using the crate::output_stream::single_subscriber::SingleSubscriberOutputStream.

Implementations§

Source§

impl BroadcastOutputStream

Source

pub fn inspect_chunks( &self, f: impl FnMut(Chunk) -> Next + Send + 'static, ) -> Inspector

Inspects chunks of output from the stream without storing them.

The provided closure is called for each chunk of data. Return Next::Continue to keep processing or Next::Break to stop.

Source

pub fn inspect_lines( &self, f: impl FnMut(Cow<'_, str>) -> Next + Send + 'static, options: LineParsingOptions, ) -> Inspector

Inspects lines of output from the stream without storing them.

The provided closure is called for each line. Return Next::Continue to keep processing or Next::Break to stop.

Source

pub fn inspect_lines_async<Fut>( &self, f: impl FnMut(Cow<'_, str>) -> Fut + Send + 'static, options: LineParsingOptions, ) -> Inspector
where Fut: Future<Output = Next> + Send,

Inspects lines of output from the stream without storing them, using an async closure.

The provided async closure is called for each line. Return Next::Continue to keep processing or Next::Break to stop.

Source§

impl BroadcastOutputStream

Source

pub fn collect_chunks<S: Sink>( &self, into: S, collect: impl FnMut(Chunk, &mut S) + Send + 'static, ) -> Collector<S>

Collects chunks from the stream into a sink.

The provided closure is called for each chunk, with mutable access to the sink.

Source

pub fn collect_chunks_async<S, F>(&self, into: S, collect: F) -> Collector<S>
where S: Sink, F: Fn(Chunk, &mut S) -> Pin<Box<dyn Future<Output = Next> + Send + '_>> + Send + 'static,

Collects chunks from the stream into a sink using an async closure.

The provided async closure is called for each chunk, with mutable access to the sink.

Source

pub fn collect_lines<S: Sink>( &self, into: S, collect: impl FnMut(Cow<'_, str>, &mut S) -> Next + Send + 'static, options: LineParsingOptions, ) -> Collector<S>

Collects lines from the stream into a sink.

The provided closure is called for each line, with mutable access to the sink. Return Next::Continue to keep processing or Next::Break to stop.

Source

pub fn collect_lines_async<S, F>( &self, into: S, collect: F, options: LineParsingOptions, ) -> Collector<S>
where S: Sink, F: for<'a> Fn(Cow<'a, str>, &'a mut S) -> Pin<Box<dyn Future<Output = Next> + Send + 'a>> + Send + Sync + 'static,

Collects lines from the stream into a sink using an async closure.

The provided async closure is called for each line, with mutable access to the sink. Return Next::Continue to keep processing or Next::Break to stop.

Source

pub fn collect_chunks_into_vec(&self) -> Collector<Vec<u8>>

Convenience method to collect all chunks into a Vec<u8>.

Source

pub fn collect_lines_into_vec( &self, options: LineParsingOptions, ) -> Collector<Vec<String>>

Convenience method to collect all lines into a Vec<String>.

Source

pub fn collect_chunks_into_write<W: Sink + AsyncWriteExt + Unpin>( &self, write: W, ) -> Collector<W>

Collects chunks into an async writer.

Source

pub fn collect_lines_into_write<W: Sink + AsyncWriteExt + Unpin>( &self, write: W, options: LineParsingOptions, ) -> Collector<W>

Collects lines into an async writer.

Source

pub fn collect_chunks_into_write_mapped<W: Sink + AsyncWriteExt + Unpin, B: AsRef<[u8]> + Send>( &self, write: W, mapper: impl Fn(Chunk) -> B + Send + Sync + Copy + 'static, ) -> Collector<W>

Collects chunks into an async writer after mapping them with the provided function.

Source

pub fn collect_lines_into_write_mapped<W: Sink + AsyncWriteExt + Unpin, B: AsRef<[u8]> + Send>( &self, write: W, mapper: impl Fn(Cow<'_, str>) -> B + Send + Sync + Copy + 'static, options: LineParsingOptions, ) -> Collector<W>

Collects lines into an async writer after mapping them with the provided function.

Source§

impl BroadcastOutputStream

Source

pub async fn wait_for_line( &self, predicate: impl Fn(Cow<'_, str>) -> bool + Send + Sync + 'static, options: LineParsingOptions, ) -> Result<(), InspectorError>

Waits for a line that matches the given predicate.

This method blocks until a line is found that satisfies the predicate.

Source

pub async fn wait_for_line_with_timeout( &self, predicate: impl Fn(Cow<'_, str>) -> bool + Send + Sync + 'static, options: LineParsingOptions, timeout: Duration, ) -> Result<(), OutputError>

Waits for a line that matches the given predicate, with a timeout.

Returns Ok(()) if a matching line is found, or Err(OutputError::Timeout) if the timeout expires.

Trait Implementations§

Source§

impl Debug for BroadcastOutputStream

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for BroadcastOutputStream

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl OutputStream for BroadcastOutputStream

Source§

fn chunk_size(&self) -> NumBytes

The maximum size of every chunk read by the backing stream_reader.
Source§

fn channel_capacity(&self) -> usize

The number of chunks held by the underlying async channel.
Source§

fn name(&self) -> &'static str

Type of stream. Can be “stdout” or “stderr”. But we do not guarantee this output. It should only be used for logging/debugging.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Sink for T
where T: Debug + Send + Sync + 'static,