use std::error::Error as StdError;
use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum KafkaError {
#[error("kafka connection error: {0}")]
Connect(#[source] Box<dyn StdError + Send + Sync>),
#[error("kafka publish error: {0}")]
Publish(#[source] Box<dyn StdError + Send + Sync>),
#[error("kafka subscribe error: {0}")]
Subscribe(#[source] Box<dyn StdError + Send + Sync>),
#[error("kafka consume error: {0}")]
Consume(#[source] Box<dyn StdError + Send + Sync>),
#[error("kafka broker is not connected; `Broker::connect` must complete first")]
NotConnected,
#[error("invalid options: {0}")]
InvalidOptions(String),
}
impl KafkaError {
pub(crate) fn connect(err: rdkafka::error::KafkaError) -> Self {
Self::Connect(Box::new(err))
}
pub(crate) fn publish(err: rdkafka::error::KafkaError) -> Self {
Self::Publish(Box::new(err))
}
pub(crate) fn subscribe(err: rdkafka::error::KafkaError) -> Self {
Self::Subscribe(Box::new(err))
}
pub(crate) fn consume(err: rdkafka::error::KafkaError) -> Self {
Self::Consume(Box::new(err))
}
}