use std::io::{Read, Write};
pub trait Tnc: Read + Write + Sized + Send + 'static {
fn try_clone(&mut self) -> Result<Self, TncError>;
fn start(&mut self) -> Result<(), TncError>;
fn close(&mut self) -> Result<(), TncError>;
}
#[derive(Debug, PartialEq, Eq, Clone)]
pub enum TncError {
Unknown,
}
impl Tnc for std::net::TcpStream {
fn try_clone(&mut self) -> Result<Self, TncError> {
std::net::TcpStream::try_clone(self).map_err(|_| TncError::Unknown)
}
fn start(&mut self) -> Result<(), TncError> {
Ok(())
}
fn close(&mut self) -> Result<(), TncError> {
self.shutdown(std::net::Shutdown::Both)
.map_err(|_| TncError::Unknown)
}
}