use std::sync::atomic::Ordering;
use crate::actors::{IndexerCounters, PublisherCounters, UploaderCounters};
#[derive(Debug, Default, Clone)]
pub struct IndexingStatistics {
pub num_docs: u64,
pub num_invalid_docs: u64,
pub num_local_splits: u64,
pub num_staged_splits: u64,
pub num_uploaded_splits: u64,
pub num_published_splits: u64,
pub total_bytes_processed: u64,
pub total_size_splits: u64,
pub generation: usize,
pub num_spawn_attempts: usize,
}
impl IndexingStatistics {
pub fn add_actor_counters(
mut self,
indexer_counters: &IndexerCounters,
uploader_counters: &UploaderCounters,
publisher_counters: &PublisherCounters,
) -> Self {
self.num_docs += indexer_counters.num_processed_docs();
self.num_invalid_docs += indexer_counters.num_invalid_docs();
self.num_local_splits += indexer_counters.num_splits_emitted;
self.total_bytes_processed += indexer_counters.overall_num_bytes;
self.num_staged_splits += uploader_counters.num_staged_splits.load(Ordering::SeqCst);
self.num_uploaded_splits += uploader_counters.num_uploaded_splits.load(Ordering::SeqCst);
self.num_published_splits += publisher_counters.num_published_splits;
self
}
pub fn set_num_spawn_attempts(mut self, num_spawn_attempts: usize) -> Self {
self.num_spawn_attempts = num_spawn_attempts;
self
}
pub fn set_generation(mut self, generation: usize) -> Self {
self.generation = generation;
self
}
}