#[cfg(feature = "websocket")]
pub(crate) mod websocket;
use alloc::boxed::Box;
use alloc::string::String;
use alloc::vec::Vec;
use core::future::Future;
use core::pin::Pin;
pub type TransportError = Box<dyn core::error::Error + Send + Sync>;
#[derive(Debug)]
pub enum TransportEvent {
Frame(String),
Ping(Vec<u8>),
Pong(Vec<u8>),
}
pub trait TransportSink: Send {
fn send<'a>(
&'a mut self,
frame: String,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'a>>;
fn ping<'a>(
&'a mut self,
payload: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'a>>;
fn pong<'a>(
&'a mut self,
payload: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'a>>;
fn close<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<(), TransportError>> + Send + 'a>>;
}
pub trait TransportStream: Send {
fn recv<'a>(
&'a mut self,
) -> Pin<Box<dyn Future<Output = Result<Option<TransportEvent>, TransportError>> + Send + 'a>>;
}