1use crate::message;
2use core::result;
3use thiserror::Error;
4use tokio::{io, sync::mpsc};
5
6#[derive(Error, Debug)]
7pub enum ProtocolError {
8 #[error("io error")]
9 Io(#[from] io::Error),
10 #[error("message send error")]
11 SendError(#[from] mpsc::error::SendError<message::Message>),
12 #[error("serialization/deserialization error")]
13 SerdeJson(#[from] serde_json::Error),
14 #[error("connection send error")]
15 ConnectionSendError(#[from] mpsc::error::SendError<mpsc::Sender<message::Message>>),
16}
17
18pub type Result<T> = result::Result<T, ProtocolError>;