2021-05-26 08:15:46 -07:00
|
|
|
use {
|
|
|
|
crate::duplicate_shred,
|
2022-01-11 02:44:46 -08:00
|
|
|
crossbeam_channel::{RecvTimeoutError, SendError},
|
|
|
|
std::io,
|
2021-05-26 08:15:46 -07:00
|
|
|
thiserror::Error,
|
|
|
|
};
|
|
|
|
|
|
|
|
#[derive(Error, Debug)]
|
|
|
|
pub enum GossipError {
|
|
|
|
#[error("duplicate node instance")]
|
|
|
|
DuplicateNodeInstance,
|
|
|
|
#[error(transparent)]
|
|
|
|
DuplicateShredError(#[from] duplicate_shred::Error),
|
|
|
|
#[error(transparent)]
|
|
|
|
Io(#[from] io::Error),
|
|
|
|
#[error(transparent)]
|
2022-01-11 02:44:46 -08:00
|
|
|
RecvTimeoutError(#[from] RecvTimeoutError),
|
2021-05-26 08:15:46 -07:00
|
|
|
#[error("send error")]
|
|
|
|
SendError,
|
|
|
|
#[error("serialization error")]
|
|
|
|
Serialize(#[from] Box<bincode::ErrorKind>),
|
|
|
|
}
|
|
|
|
|
2022-01-11 02:44:46 -08:00
|
|
|
impl<T> std::convert::From<SendError<T>> for GossipError {
|
|
|
|
fn from(_e: SendError<T>) -> GossipError {
|
2021-05-26 08:15:46 -07:00
|
|
|
GossipError::SendError
|
|
|
|
}
|
|
|
|
}
|