trace2e_core/traceability/
error.rs

1//! Traceability error types and handling.
2//!
3//! This module defines comprehensive error types for the trace2e traceability system,
4//! covering validation failures, resource management issues, policy violations, and
5//! distributed system communication errors.
6//!
7//! ## Error Categories
8//!
9//! **Validation Errors**: Issues with process validation, resource enrollment, and request formatting
10//!
11//! **Resource Management**: Problems with resource discovery, availability, and lifecycle management
12//!
13//! **Policy and Compliance**: Authorization failures, policy violations, and compliance issues
14//!
15//! **System and Infrastructure**: Time synchronization, flow management, and retry limit errors
16//!
17//! **Network and Transport**: Communication failures between distributed middleware instances
18//!
19//! All errors implement the standard `Error` trait and provide detailed context for debugging
20//! and operational monitoring.
21
22use thiserror::Error;
23
24use crate::traceability::naming::Resource;
25
26#[derive(Debug, Error, PartialEq)]
27pub enum TraceabilityError {
28    #[error("Traceability error, internal trace2e API error")]
29    InternalTrace2eError,
30
31    #[error("Traceability error, invalid request")]
32    InvalidRequest,
33
34    #[error("Traceability error, undeclared resource (pid: {0}, fd: {1})")]
35    UndeclaredResource(i32, i32),
36
37    #[error("Traceability error, process not found (pid: {0})")]
38    InvalidProcess(i32),
39
40    #[error("Traceability error, invalid stream (local_socket: {0}, peer_socket: {1})")]
41    InvalidStream(String, String),
42
43    #[error("Traceability error, failed to instantiate flow due to system time error")]
44    SystemTimeError,
45
46    #[error("Traceability error, flow not found (id: {0})")]
47    NotFoundFlow(u128),
48
49    #[error("Traceability error, destination unavailable")]
50    UnavailableDestination(Resource),
51
52    #[error("Traceability error, source unavailable")]
53    UnavailableSource(Resource),
54
55    #[error("Traceability error, source and destination unavailable")]
56    UnavailableSourceAndDestination(Resource, Resource),
57
58    #[error("Traceability error, reached max retries waiting queue")]
59    ReachedMaxRetriesWaitingQueue,
60
61    #[error("Traceability error, direct policy violation")]
62    DirectPolicyViolation,
63
64    #[error("Traceability error, policy not found (resource: {0:?})")]
65    PolicyNotFound(Resource),
66
67    #[error("Traceability error, failed to contact remote middleware (IP: {0})")]
68    TransportFailedToContactRemote(String),
69
70    #[error("Traceability error, transport layer failed to evaluate remote IP")]
71    TransportFailedToEvaluateRemote,
72
73    #[error("Traceability error, consent request timeout")]
74    ConsentRequestTimeout,
75}