xarxa_sdk_rs/
lib.rs

1pub mod pipeline;
2// pub mod ctrl;
3pub mod bindings;
4
5pub mod prelude {
6    pub use crate::bindings::orchestrator::export;
7    pub use crate::bindings::orchestrator::exports;
8    
9    pub use crate::bindings::orchestrator::xarxa::api::{
10        host_controller::send_result,
11        logger::logging,
12    }; 
13
14    pub use crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::Guest;
15    pub use crate::bindings::orchestrator::xarxa::api::engine_types::{
16        WorkflowRun, WorkflowError, RunId, Value, Kvpair, Code,
17    };
18
19    pub use crate::pipeline::{
20        PipelineState, Pipeline, PipelinePlan, Step, StepResult, WorkflowContext,
21        WorkflowHistory, StepExecutionRecord, StepStatus, SerializableContext,
22    };
23}
24
25// #[macro_export]
26// macro_rules! register_workflow {
27//     ($ty:ident) => {
28//         $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::__export_xarxa_api_workflow_ctrl_0_1_1_cabi!(
29//             $ty with_types_in $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl
30//         );
31//     };
32// }
33
34
35// // Create a public macro that generates the necessary export functions
36// #[macro_export]
37// macro_rules! exc{
38//     ($ty:ident) => {
39//         const _: () = {
40//             #[unsafe(export_name = "xarxa:api/workflow-ctrl@0.1.1#start-workflow")]
41//             unsafe extern "C" fn export_start_workflow(arg0: *mut u8,arg1: usize,arg2: *mut u8,arg3: usize,) -> *mut u8 {
42//                 unsafe {
43//                     $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::_export_start_workflow_cabi::<$ty>(arg0, arg1, arg2, arg3)
44//                 }
45//             }
46
47//             #[unsafe(export_name = "cabi_post_xarxa:api/workflow-ctrl@0.1.1#start-workflow")]
48//             unsafe extern "C" fn _post_return_start_workflow(arg0: *mut u8,) {
49//                 unsafe {
50//                     $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::__post_return_start_workflow::<$ty>(arg0)
51//                 }
52//             }
53
54//             #[unsafe(export_name = "xarxa:api/workflow-ctrl@0.1.1#continue-workflow")]
55//             unsafe extern "C" fn export_continue_workflow(arg0: i64,arg1: *mut u8,arg2: usize,) -> *mut u8 {
56//                 unsafe {
57//                     $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::_export_continue_workflow_cabi::<$ty>(arg0, arg1, arg2)
58//                 }
59//             }
60
61//             #[unsafe(export_name = "cabi_post_xarxa:api/workflow-ctrl@0.1.1#continue-workflow")]
62//             unsafe extern "C" fn _post_return_continue_workflow(arg0: *mut u8,) {
63//                 unsafe {
64//                     $crate::bindings::orchestrator::exports::xarxa::api::workflow_ctrl::__post_return_continue_workflow::<$ty>(arg0)
65//                 }
66//             }
67//         };
68//     };
69// }
70
71// use proc_macro::TokenStream;
72// use quote::quote;
73// use syn::{parse_macro_input, Ident};
74
75// pub use bindings::orchestrator::exports::xarxa::api::workflow_ctrl::Guest;
76 
77pub fn add(left: u64, right: u64) -> u64 {
78    left + right
79}
80
81// #[proc_macro]
82// pub fn register(input: TokenStream) -> TokenStream {
83//     let fn_name = parse_macro_input!(input as Ident);
84
85//     let expanded = quote! {
86//         struct XarxaWorkflow;
87
88//         impl durable_workflow::workflow::Guest for XarxaWorkflow {
89//             fn workflow_init(_input: ::std::vec::Vec<u8>) -> ::std::vec::Vec<u8> {
90//                 let plan = #fn_name();
91//                 let state = xarxa_sdk::PipelineState::from(plan);
92//                 bincode::serialize(&state).unwrap()
93//             }
94
95//             fn workflow_tick(state_bytes: ::std::vec::Vec<u8>) -> ::std::vec::Vec<u8> {
96//                 let mut st: xarxa_sdk::PipelineState = bincode::deserialize(&state_bytes).unwrap();
97//                 st.tick();
98//                 bincode::serialize(&st).unwrap()
99//             }
100
101//             fn workflow_finished(state_bytes: ::std::vec::Vec<u8>) -> bool {
102//                 let st: xarxa_sdk::PipelineState = bincode::deserialize(&state_bytes).unwrap();
103//                 st.is_finished()
104//             }
105//         }
106
107//         durable_workflow::workflow::export!(XarxaWorkflow);
108//     };
109
110//     TokenStream::from(expanded)
111// }
112
113
114#[cfg(test)]
115mod tests {
116    use super::*;
117
118    #[test]
119    fn it_works() {
120        let result = add(2, 2);
121        assert_eq!(result, 4);
122    }
123}