///|
/// Error values returned by EventRail builders and validators.
pub(all) enum EventRailError {
EmptyTopic
EmptyPattern
EmptySegment(String)
InvalidPattern(String)
InvalidSubscription(String)
DuplicateSubscription(String)
MissingField(String)
HandlerFailure(String)
RetryLimitReached(String)
} derive(Eq, @debug.Debug)
///|
pub fn EventRailError::message(self : EventRailError) -> String {
match self {
EmptyTopic => "event topic must not be empty"
EmptyPattern => "topic pattern must not be empty"
EmptySegment(topic) => "topic contains an empty segment: \{topic}"
InvalidPattern(pattern) => "invalid topic pattern: \{pattern}"
InvalidSubscription(id) => "invalid subscription: \{id}"
DuplicateSubscription(id) => "duplicate subscription id: \{id}"
MissingField(path) => "payload field is missing: \{path}"
HandlerFailure(reason) => "handler failed: \{reason}"
RetryLimitReached(id) => "retry limit reached for event: \{id}"
}
}
///|
pub fn EventRailError::is_configuration_error(self : EventRailError) -> Bool {
match self {
EmptyTopic
| EmptyPattern
| EmptySegment(_)
| InvalidPattern(_)
| InvalidSubscription(_)
| DuplicateSubscription(_) => true
MissingField(_) | HandlerFailure(_) | RetryLimitReached(_) => false
}
}