Module quality_predictor

Module quality_predictor 

Source
Expand description

Connection Quality Predictor

This module provides connection quality prediction based on historical performance data. It tracks metrics like latency, bandwidth, reliability, and uptime to predict future connection quality and enable proactive switching to better connections.

§Features

  • Historical metric tracking per peer
  • Quality scoring based on multiple factors (latency, bandwidth, reliability, uptime)
  • Exponential moving average for smooth predictions
  • Configurable weights for different metrics
  • Proactive connection recommendations
  • Automatic degradation detection

§Example

use ipfrs_network::quality_predictor::{QualityPredictor, QualityPredictorConfig};
use libp2p::PeerId;

let config = QualityPredictorConfig::default();
let predictor = QualityPredictor::new(config)?;

let peer = PeerId::random();

// Record metrics
predictor.record_latency(peer, 50);
predictor.record_bandwidth(peer, 1_000_000);
predictor.record_success(peer);

// Get quality prediction
if let Some(quality) = predictor.predict_quality(&peer) {
    println!("Predicted quality: {}", quality.overall_score);
}

// Check if connection should be switched
if predictor.should_switch_connection(&peer) {
    println!("Consider switching to a better peer");
}

Structs§

QualityPrediction
Quality prediction result
QualityPredictor
Connection quality predictor
QualityPredictorConfig
Configuration for the quality predictor
QualityPredictorStats
Statistics for the quality predictor

Enums§

QualityPredictorError
Errors that can occur in the quality predictor