lib-compression 0.1.0

Universal lossless compression via network-wide deduplication
Documentation
//! Shard transport layer

use serde::{Deserialize, Serialize};

/// Transport configuration.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransportConfig {
    pub max_retries: u32,
    pub timeout_ms: u64,
    pub redundancy: usize,
}

impl Default for TransportConfig {
    fn default() -> Self {
        Self {
            max_retries: 3,
            timeout_ms: 5000,
            redundancy: crate::DEFAULT_REDUNDANCY,
        }
    }
}

/// Shard transport trait.
#[async_trait::async_trait]
pub trait ShardTransport: Send + Sync {
    async fn send(&self, shard: &[u8], peer: &str) -> crate::Result<()>;
    async fn request(&self, shard_id: &[u8; 32], peer: &str) -> crate::Result<Vec<u8>>;
}