Skip to main content

aion_proto/
lib.rs

1//! Shared gRPC and serde wire contracts for Aion servers, clients, and workers.
2//!
3//! This crate mirrors core domain values into transport-safe protobuf and JSON
4//! shapes, provides conversion helpers, and optionally exposes generated tonic
5//! service definitions behind the `generated` feature.
6//!
7//! # Example
8//!
9//! ```
10//! use aion_core::WorkflowId;
11//! use aion_proto::{decode_core_value, encode_core_value};
12//!
13//! let id = WorkflowId::new_v4();
14//! let envelope = encode_core_value("default", Some("request-1".to_owned()), &id)?;
15//! let decoded: WorkflowId = decode_core_value(&envelope)?;
16//! assert_eq!(decoded, id);
17//! # Ok::<(), Box<dyn std::error::Error>>(())
18//! ```
19
20/// Conversion helpers between wire structures and `aion-core` values.
21pub mod convert;
22/// Operator deploy API wire contracts.
23pub mod deploy;
24/// Wire-level error types and protobuf-friendly error payloads.
25pub mod error;
26/// Event-stream subscription and streamed-event contracts.
27pub mod events;
28/// Schedule management wire contracts.
29pub mod schedule;
30/// Remote-worker protocol wire contracts.
31pub mod worker;
32/// Workflow operation wire contracts.
33pub mod workflow;
34
35#[cfg(feature = "generated")]
36/// Generated tonic service definitions compiled from Aion protobuf files.
37pub mod generated;
38
39pub use convert::{
40    ProtoActivityId, ProtoPayload, ProtoRunId, ProtoScheduleId, ProtoTimerId, ProtoWorkflowId,
41    ProtoWorkflowStatus, WireEnvelope, decode_core_value, decode_event, decode_schedule_config,
42    decode_schedule_state, decode_workflow_filter, decode_workflow_summary, encode_core_value,
43    encode_event, encode_schedule_config, encode_schedule_state, encode_workflow_filter,
44    encode_workflow_summary,
45};
46pub use deploy::{
47    ProtoListVersionsRequest, ProtoListVersionsResponse, ProtoLoadPackageRequest,
48    ProtoLoadPackageResponse, ProtoRouteVersionRequest, ProtoRouteVersionResponse,
49    ProtoUnloadVersionRequest, ProtoUnloadVersionResponse, ProtoWorkflowVersion,
50};
51pub use error::{ProtoWireError, ProtoWireErrorCode, WireError, WireErrorCode};
52pub use events::{
53    FilteredSubscription, FirehoseSubscription, PerWorkflowSubscription, StreamedEvent,
54    SubscriptionRequest, encode_streamed_event, subscription_request,
55};
56pub use schedule::{
57    ProtoCreateScheduleRequest, ProtoCreateScheduleResponse, ProtoDeleteScheduleResponse,
58    ProtoDescribeScheduleResponse, ProtoListSchedulesRequest, ProtoListSchedulesResponse,
59    ProtoPauseScheduleResponse, ProtoResumeScheduleResponse, ProtoScheduleIdRequest,
60    ProtoUpdateScheduleRequest, ProtoUpdateScheduleResponse,
61};
62pub use worker::{
63    ProtoActivityError, ProtoActivityErrorKind, ProtoActivityResult, ProtoActivityTask,
64    ProtoDrainRequest, ProtoHeartbeat, ProtoRegisterAck, ProtoRegisterWorker, ProtoResultAck,
65    proto_activity_result,
66};
67pub use workflow::{
68    ProtoCancelRequest, ProtoCancelResponse, ProtoCountWorkflowsRequest,
69    ProtoCountWorkflowsResponse, ProtoDescribeWorkflowRequest, ProtoDescribeWorkflowResponse,
70    ProtoListWorkflowsRequest, ProtoListWorkflowsResponse, ProtoQueryRequest, ProtoQueryResponse,
71    ProtoSignalRequest, ProtoSignalResponse, ProtoStartWorkflowRequest, ProtoStartWorkflowResponse,
72    proto_query_response,
73};