guardy 0.2.4

Fast, secure git hooks in Rust with secret scanning and protected file synchronization
Documentation
//! Global atomic counters for tracking scan progress across all execution strategies

use std::sync::atomic::{AtomicUsize, Ordering};

/// Global atomic counters for tracking scan progress (used by both sequential and parallel execution)
pub static FILES_PROCESSED: AtomicUsize = AtomicUsize::new(0);
pub static COUNT_DISCOVERY_BINARY_FILTERED: AtomicUsize = AtomicUsize::new(0);
pub static COUNT_DISCOVERY_SIZE_FILTERED: AtomicUsize = AtomicUsize::new(0);
pub static COUNT_DISCOVERY_PATH_FILTERED: AtomicUsize = AtomicUsize::new(0);
pub static COUNT_PROCESSING_FAILED: AtomicUsize = AtomicUsize::new(0);
pub static MATCHES_FOUND: AtomicUsize = AtomicUsize::new(0);

/// Global pattern library statistics (set once at startup)
pub static COUNT_PATTERNS_LOADED: AtomicUsize = AtomicUsize::new(0);
pub static COUNT_AC_KEYWORDS_LOADED: AtomicUsize = AtomicUsize::new(0);

/// Get current scanning counter values
pub fn get_counts() -> (usize, usize, usize, usize, usize, usize) {
    (
        FILES_PROCESSED.load(Ordering::Relaxed),
        COUNT_DISCOVERY_BINARY_FILTERED.load(Ordering::Relaxed),
        COUNT_DISCOVERY_SIZE_FILTERED.load(Ordering::Relaxed),
        COUNT_DISCOVERY_PATH_FILTERED.load(Ordering::Relaxed),
        COUNT_PROCESSING_FAILED.load(Ordering::Relaxed),
        MATCHES_FOUND.load(Ordering::Relaxed),
    )
}

/// Get pattern library statistics
pub fn get_pattern_stats() -> (usize, usize) {
    (
        COUNT_PATTERNS_LOADED.load(Ordering::Relaxed),
        COUNT_AC_KEYWORDS_LOADED.load(Ordering::Relaxed),
    )
}

/// Initialize pattern library statistics (called once at startup)
pub fn set_pattern_stats(patterns_count: usize, keywords_count: usize) {
    COUNT_PATTERNS_LOADED.store(patterns_count, Ordering::Relaxed);
    COUNT_AC_KEYWORDS_LOADED.store(keywords_count, Ordering::Relaxed);
}