use std::io;
use crate::deliverable::Deliverable;
use crate::transaction::Transaction;
#[derive(Debug)]
pub enum SpawnError {
ThreadSpawn(io::Error),
HttpsConnector(native_tls::Error),
}
impl PartialEq for SpawnError {
fn eq(&self, other: &SpawnError) -> bool {
match self {
SpawnError::ThreadSpawn(_err) => match other {
SpawnError::ThreadSpawn(_oerr) => true,
_ => false,
},
SpawnError::HttpsConnector(_err) => match other {
SpawnError::HttpsConnector(_oerr) => true,
_ => false,
},
}
}
}
impl From<native_tls::Error> for SpawnError {
fn from(err: native_tls::Error) -> SpawnError {
SpawnError::HttpsConnector(err)
}
}
#[derive(Debug)]
pub struct Error<D: Deliverable> {
pub kind: ErrorKind,
transaction: Transaction<D>,
}
impl<D: Deliverable> Error<D> {
pub(crate) fn new(kind: ErrorKind, transaction: Transaction<D>) -> Error<D> {
Error { kind, transaction }
}
pub fn into_inner(self) -> Transaction<D> {
self.transaction
}
}
#[derive(Debug, PartialEq)]
pub enum ErrorKind {
Spawn(SpawnError),
PoolFull,
}
pub(crate) enum RequestError<D: Deliverable> {
PoolFull(Transaction<D>),
FailedSend(Transaction<D>),
}