zeromq/
error.rs

1use crate::codec::{CodecError, Message, ZmtpVersion};
2use crate::endpoint::Endpoint;
3use crate::endpoint::EndpointError;
4use crate::task_handle::TaskError;
5use crate::ZmqMessage;
6
7use futures_channel::mpsc;
8use thiserror::Error;
9
10pub type ZmqResult<T> = Result<T, ZmqError>;
11
12#[derive(Error, Debug)]
13pub enum ZmqError {
14    #[error("Endpoint Error: {0}")]
15    Endpoint(#[from] EndpointError),
16    #[error("Network Error: {0}")]
17    Network(#[from] std::io::Error),
18    #[error("Socket bind doesn't exist: {0}")]
19    NoSuchBind(Endpoint),
20    #[error("Codec Error: {0}")]
21    Codec(#[from] CodecError),
22    #[error("Socket Error: {0}")]
23    Socket(&'static str),
24    #[error("{0}")]
25    BufferFull(&'static str),
26    #[error("Failed to deliver message cause of {reason}")]
27    ReturnToSender {
28        reason: &'static str,
29        message: ZmqMessage,
30    },
31    // TODO refactor this.
32    // Most likely Message enum should be part of public API.
33    // In such case we'll be able to use this enum to return both message and multipart message in
34    // same type
35    #[error("Failed to deliver messages cause of {reason}")]
36    ReturnToSenderMultipart {
37        reason: &'static str,
38        messages: Vec<ZmqMessage>,
39    },
40    #[error("Task Error: {0}")]
41    Task(#[from] TaskError),
42    #[error("{0}")]
43    Other(&'static str),
44    #[error("No message received")]
45    NoMessage,
46    #[error("Invalid peer identity: must be less than 256 bytes in length")]
47    PeerIdentity,
48    #[error("Unsupported ZMTP version")]
49    UnsupportedVersion(ZmtpVersion),
50}
51
52impl From<mpsc::TrySendError<Message>> for ZmqError {
53    fn from(_: mpsc::TrySendError<Message>) -> Self {
54        ZmqError::BufferFull("Failed to send message. Send queue full/broken")
55    }
56}
57
58impl From<mpsc::SendError> for ZmqError {
59    fn from(_: mpsc::SendError) -> Self {
60        ZmqError::BufferFull("Failed to send message. Send queue full/broken")
61    }
62}