service_runtime/
service_runtime.rs

1use flarrow_file_ext::prelude::*;
2use flarrow_flows::prelude::*;
3use flarrow_layout::prelude::*;
4use flarrow_url_scheme::prelude::*;
5
6use flarrow_runtime::prelude::{thirdparty::*, *};
7
8#[tokio::main]
9async fn main() -> Result<()> {
10    tracing_subscriber::fmt::init();
11
12    let mut layout = DataflowLayout::new();
13
14    let (service, (compare_to_128, compare_to_64)) = layout
15        .node("service", async |builder: &mut NodeIOBuilder| {
16            (
17                builder.queryable("compare_to_128"),
18                builder.queryable("compare_to_64"),
19            )
20        })
21        .await;
22
23    let (client, (ask_128, ask_64)) = layout
24        .node("client", async |builder: &mut NodeIOBuilder| {
25            (builder.query("ask_128"), builder.query("ask_64"))
26        })
27        .await;
28
29    let layout = layout.build();
30
31    let flows = Flows::new(layout.clone(), async move |builder: &mut FlowsBuilder| {
32        builder.connect(ask_128, compare_to_128, None)?;
33        builder.connect(ask_64, compare_to_64, None)?;
34
35        Ok(())
36    })
37    .await?;
38
39    let runtime = Runtime::new(
40        async |_file_ext: &mut FileExtManagerBuilder, _url_scheme: &mut UrlSchemeManagerBuilder| {
41            Ok(())
42        },
43    )
44    .await?;
45
46    let path = std::env::var("CARGO_MANIFEST_DIR")?;
47    let examples = format!("file://{}/../../target/debug/examples", path);
48
49    runtime
50        .run(flows, async move |loader: &mut NodeLoader| {
51            let service_file = Url::parse(&format!("{}/libservice.so", examples))?;
52            let client_file = Url::parse(&format!("{}/libclient.so", examples))?;
53
54            loader
55                .load_url(service_file, service, serde_yml::from_str("")?)
56                .await?;
57
58            loader
59                .load_url(client_file, client, serde_yml::from_str("")?)
60                .await?;
61
62            Ok(())
63        })
64        .await
65}