use futures::channel::oneshot;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum SendError {
#[error("WebSocket error: {0}")]
WebSocket(#[from] tungstenite::Error),
#[error("Bincode error: {0}")]
Serialization(#[from] bincode::error::EncodeError),
}
#[derive(Debug, Error)]
pub enum CallError {
#[error("WebSocket error: {0}")]
WebSocket(#[from] tungstenite::Error),
#[error("Serialization error: {0}")]
Serialization(bincode::error::EncodeError),
#[error("Channel canceled: {0}")]
ChanCanceled(#[from] oneshot::Canceled),
#[error("Timed out waiting for response")]
Timeout,
}
#[derive(Debug, Clone, Copy, Error)]
pub enum RecvError {
#[error("Channel receive error: {0}")]
ChanCanceled(#[from] oneshot::Canceled),
#[error("Attempted to read from closed channel")]
ReadFromClosed,
}
#[derive(Debug, Clone, Copy, Error)]
#[error("Disconnected")]
pub struct DisconnectionError;
#[derive(Debug, Error)]
pub enum RunError {
#[error("Channel send error: {0}")]
ChanSend(#[from] futures::channel::mpsc::SendError),
#[error("WebSocket error: {0}")]
WebSocket(#[from] tungstenite::Error),
#[error("Bincode deserialize error: {0}")]
Deserialize(#[from] bincode::error::DecodeError),
}