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