pub mod tcp;
use std::net::SocketAddr;
use async_trait::async_trait;
use bytes::Bytes;
use serde::{Deserialize, Serialize};
pub use tcp::Tcp;
use crate::Result;
#[async_trait]
pub trait Transport: Send + Sync {
async fn listen(&mut self, addr: SocketAddr) -> Result<()>;
async fn connect(mut self, addr: SocketAddr) -> Result<()>;
async fn send(&self, peer: SocketAddr, data: Bytes) -> Result<()>;
async fn recv(&mut self) -> Result<(SocketAddr, Bytes)>;
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum TransportConfig {
Tcp,
}