fumble 0.6.1

an oxidized implementation of the original clumsy tool, designed to simulate adverse network conditions on Windows systems.
use crate::network::modules::stats::bandwidth_stats::BandwidthStats;
use crate::network::modules::stats::delay_stats::DelayStats;
use crate::network::modules::stats::drop_stats::DropStats;
use crate::network::modules::stats::duplicate_stats::DuplicateStats;
use crate::network::modules::stats::reorder_stats::ReorderStats;
use crate::network::modules::stats::tamper_stats::TamperStats;
use crate::network::modules::stats::throttle_stats::ThrottleStats;
use std::sync::{Arc, RwLock};
use std::time::Duration;

pub mod bandwidth_stats;
pub mod delay_stats;
pub mod drop_stats;
pub mod duplicate_stats;
pub mod reorder_stats;
pub mod tamper_stats;
pub mod throttle_stats;
pub mod util;

pub struct PacketProcessingStatistics {
    pub drop_stats: DropStats,
    pub delay_stats: DelayStats,
    pub throttle_stats: ThrottleStats,
    pub reorder_stats: ReorderStats,
    pub tamper_stats: TamperStats,
    pub duplicate_stats: DuplicateStats,
    pub bandwidth_stats: BandwidthStats,
}

// Function to initialize the statistics
pub fn initialize_statistics() -> Arc<RwLock<PacketProcessingStatistics>> {
    Arc::new(RwLock::new(PacketProcessingStatistics {
        drop_stats: DropStats::new(0.005),
        delay_stats: DelayStats::new(),
        throttle_stats: ThrottleStats::new(),
        reorder_stats: ReorderStats::new(0.005),
        tamper_stats: TamperStats::new(Duration::from_millis(500)),
        duplicate_stats: DuplicateStats::new(0.005),
        bandwidth_stats: BandwidthStats::new(0.005),
    }))
}