ProgressIndicatorService

Struct ProgressIndicatorService 

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

Real-time progress indicator for user feedback during pipeline processing.

This provides immediate visual feedback to users about processing progress, separate from logging and metrics systems. It writes directly to the terminal with real-time updates on the same line.

§Design Principles

  • User-Focused: Provides immediate visual feedback for end users
  • Non-Logging: Writes directly to terminal, not through logging system
  • Real-Time: Updates as chunks are processed, not batched
  • Concurrent-Safe: Thread-safe for concurrent chunk processing
  • Minimal Overhead: Lightweight to avoid impacting performance

§Example Output

Wrote Id: 000097/Completed: 002000

§Usage

Implementations§

Source§

impl ProgressIndicatorService

Source

pub fn new(total_chunks: u64) -> Self

Creates a new progress indicator.

§Arguments
  • total_chunks - Total number of chunks expected to be processed
§Returns
  • Self - New progress indicator instance
Source

pub async fn update_progress(&self, chunk_id: u64)

Updates progress when a chunk has been successfully written.

This method is thread-safe and can be called concurrently from multiple chunk processing tasks.

§Arguments
  • chunk_id - ID of the chunk that was just written
§Performance

Updates are throttled to avoid excessive terminal I/O during high-throughput processing.

Source

pub async fn show_completion( &self, _bytes_processed: u64, _throughput_mb_s: f64, _total_duration: Duration, )

Shows the final completion summary.

This replaces the progress indicator with a comprehensive summary of the processing results.

§Arguments
  • bytes_processed - Total bytes processed
  • throughput_mb_s - Processing throughput in MB/s
  • total_duration - Total time taken for processing
Source

pub async fn show_error_summary(&self, error_message: &str)

Shows an error summary if processing fails.

§Arguments
  • error_message - Description of what went wrong
Source

pub fn progress_percentage(&self) -> f64

Gets the current progress as a percentage.

§Returns
  • f64 - Progress percentage (0.0 to 100.0)

Trait Implementations§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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> ErasedDestructor for T
where T: 'static,