simple_runtime/
simple_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 (source, output) = layout
10 .node("source", async |builder: &mut NodeIOBuilder| {
11 builder.output("out")
12 })
13 .await;
14
15 let (operator, (op_in, op_out)) = layout
16 .node("operator", async |builder: &mut NodeIOBuilder| {
17 (builder.input("in"), builder.output("out"))
18 })
19 .await;
20
21 let (sink, input) = layout
22 .node("sink", async |builder: &mut NodeIOBuilder| {
23 builder.input("in")
24 })
25 .await;
26
27 let layout = layout.build();
28
29 let flows = Flows::new(layout.clone(), async move |builder: &mut FlowsBuilder| {
30 builder.connect(op_in, output, None)?;
31 builder.connect(input, op_out, None)?;
32
33 Ok(())
34 })
35 .await?;
36
37 let runtime = Runtime::new(
38 async |_file_ext: &mut FileExtManagerBuilder, _url_scheme: &mut UrlSchemeManagerBuilder| {
39 Ok(())
40 },
41 )
42 .await?;
43
44 runtime
45 .run(flows, async move |loader: &mut NodeLoader| {
46 loader
47 .load::<Timer>(source, serde_yml::from_str("frequency: 1.0")?)
48 .await?;
49
50 loader
51 .load::<Transport>(operator, serde_yml::from_str("")?)
52 .await?;
53
54 loader
55 .load::<Printer>(sink, serde_yml::from_str("")?)
56 .await?;
57
58 Ok(())
59 })
60 .await
61}