use futures::sync::mpsc; // FIXME clean this up #[derive(Debug)] pub enum Error { Io(std::io::Error), ServerTls(native_tls::Error), ClientConnection(tungstenite::Error), Misc(Box), } impl Error { pub fn is_connection_closed(&self) -> bool { match self { Error::ClientConnection(tungstenite::Error::ConnectionClosed(_)) => true, _ => false, } } } impl From for Error { fn from(e: tungstenite::Error) -> Self { Error::ClientConnection(e) } } impl From for Error { fn from(e: std::io::Error) -> Self { Error::Io(e) } } impl From for Error { fn from(e: native_tls::Error) -> Self { Error::ServerTls(e) } } impl From for Error { fn from(e: tokio::timer::Error) -> Self { Error::Misc(Box::new(e)) } } impl From for Error { fn from(e: rtp::Error) -> Self { Error::Misc(Box::new(e)) } } impl From<()> for Error { fn from(_: ()) -> Self { panic!(); } } impl From> for Error { fn from(_: mpsc::SendError) -> Self { panic!(); } }