service_runtime/
service_runtime.rs1use 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}