aion_client/transport/
contract.rs1use aion_core::Event;
5use async_trait::async_trait;
6use futures::stream::BoxStream;
7
8use crate::error::ClientError;
9
10#[async_trait]
13pub trait WorkflowTransport: Send + Sync {
14 async fn start_workflow(
16 &self,
17 request: aion_proto::ProtoStartWorkflowRequest,
18 ) -> Result<aion_proto::ProtoStartWorkflowResponse, ClientError>;
19
20 async fn signal(
22 &self,
23 request: aion_proto::ProtoSignalRequest,
24 ) -> Result<aion_proto::ProtoSignalResponse, ClientError>;
25
26 async fn query(
28 &self,
29 request: aion_proto::ProtoQueryRequest,
30 ) -> Result<aion_proto::ProtoQueryResponse, ClientError>;
31
32 async fn cancel(
34 &self,
35 request: aion_proto::ProtoCancelRequest,
36 ) -> Result<aion_proto::ProtoCancelResponse, ClientError>;
37
38 async fn list_workflows(
40 &self,
41 request: aion_proto::ProtoListWorkflowsRequest,
42 ) -> Result<aion_proto::ProtoListWorkflowsResponse, ClientError>;
43
44 async fn describe_workflow(
46 &self,
47 request: aion_proto::ProtoDescribeWorkflowRequest,
48 ) -> Result<aion_proto::ProtoDescribeWorkflowResponse, ClientError>;
49
50 async fn subscribe(
57 &self,
58 request: aion_proto::SubscriptionRequest,
59 resume_from_sequence: Option<u64>,
60 ) -> Result<SubscriptionAttempt, ClientError>;
61}
62
63pub struct SubscriptionAttempt {
65 pub events: BoxStream<'static, Result<Event, ClientError>>,
69}
70
71impl SubscriptionAttempt {
72 #[must_use]
74 pub fn new(events: BoxStream<'static, Result<Event, ClientError>>) -> Self {
75 Self { events }
76 }
77}