mod tcp;
pub mod tls;
pub use tcp::TcpTransport;
pub use tls::{Protocol, TlsConfig, TlsOracleStream, connect_tls};
use bytes::Bytes;
use crate::error::Result;
use crate::packet::Packet;
#[async_trait::async_trait]
pub trait Transport: Send {
async fn send(&mut self, data: &[u8]) -> Result<()>;
async fn send_packet(&mut self, packet: Bytes) -> Result<()>;
async fn receive_packet(&mut self) -> Result<Packet>;
fn is_connected(&self) -> bool;
async fn close(&mut self) -> Result<()>;
fn sdu(&self) -> u32;
fn set_sdu(&mut self, sdu: u32);
fn uses_large_sdu(&self) -> bool;
fn set_large_sdu(&mut self, large_sdu: bool);
}