1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use crate::message;
use core::result;
use thiserror::Error;
use tokio::{io, sync::mpsc};

#[derive(Error, Debug)]
pub enum ProtocolError {
    #[error("io error")]
    Io(#[from] io::Error),
    #[error("message send error")]
    SendError(#[from] mpsc::error::SendError<message::Message>),
    #[error("serialization/deserialization error")]
    SerdeJson(#[from] serde_json::Error),
    #[error("connection send error")]
    ConnectionSendError(#[from] mpsc::error::SendError<mpsc::Sender<message::Message>>),
}

pub type Result<T> = result::Result<T, ProtocolError>;