Skip to main content

lib_compression/
transport.rs

1//! Shard transport layer
2
3use serde::{Deserialize, Serialize};
4
5/// Transport configuration.
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct TransportConfig {
8    pub max_retries: u32,
9    pub timeout_ms: u64,
10    pub redundancy: usize,
11}
12
13impl Default for TransportConfig {
14    fn default() -> Self {
15        Self {
16            max_retries: 3,
17            timeout_ms: 5000,
18            redundancy: crate::DEFAULT_REDUNDANCY,
19        }
20    }
21}
22
23/// Shard transport trait.
24#[async_trait::async_trait]
25pub trait ShardTransport: Send + Sync {
26    async fn send(&self, shard: &[u8], peer: &str) -> crate::Result<()>;
27    async fn request(&self, shard_id: &[u8; 32], peer: &str) -> crate::Result<Vec<u8>>;
28}