coreon-core 0.1.0

Core abstractions for camel-rs: Exchange, Processor, Endpoint, Component, CamelContext.
Documentation
//! Library-wide error type.
//!
//! Consumers (components, EIPs, application code) use `?` to propagate.
//! External error types (IO, URL parsing) are carried via `#[from]` so
//! `source()` chains remain intact for diagnostics.

use thiserror::Error;

#[derive(Debug, Error)]
pub enum CamelError {
    #[error("no component registered for scheme '{0}'")]
    UnknownScheme(String),

    #[error("no route registered with id '{0}'")]
    UnknownRoute(String),

    #[error("endpoint error: {0}")]
    Endpoint(String),

    #[error("processor error: {0}")]
    Processor(String),

    #[error("predicate evaluation failed: {0}")]
    Predicate(String),

    #[error("invalid uri '{uri}': {reason}")]
    InvalidUri { uri: String, reason: String },

    #[error("context is not running")]
    NotRunning,

    #[error("context already running")]
    AlreadyRunning,

    #[error("channel closed")]
    ChannelClosed,

    #[error("io error")]
    Io(#[from] std::io::Error),

    #[error("url parse error")]
    Url(#[from] url::ParseError),
}

pub type Result<T> = std::result::Result<T, CamelError>;