use serde::{Deserialize, Serialize};
#[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,
}
}
}
#[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>>;
}