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§
- Quality
Prediction - Quality prediction result
- Quality
Predictor - Connection quality predictor
- Quality
Predictor Config - Configuration for the quality predictor
- Quality
Predictor Stats - Statistics for the quality predictor
Enums§
- Quality
Predictor Error - Errors that can occur in the quality predictor