pub struct Flows {
pub inputs_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>,
pub outputs_senders: Arc<Mutex<HashMap<Uuid, Vec<MessageSender>>>>,
pub queries_senders: Arc<Mutex<HashMap<Uuid, MessageSender>>>,
pub queries_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>,
pub queryables_senders: Arc<Mutex<HashMap<Uuid, HashMap<Uuid, MessageSender>>>>,
pub queryables_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>,
}Expand description
Represents the collection of flows in the system (all the MPSC channels)
Fields§
§inputs_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>§outputs_senders: Arc<Mutex<HashMap<Uuid, Vec<MessageSender>>>>§queries_senders: Arc<Mutex<HashMap<Uuid, MessageSender>>>§queries_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>§queryables_senders: Arc<Mutex<HashMap<Uuid, HashMap<Uuid, MessageSender>>>>§queryables_receivers: Arc<Mutex<HashMap<Uuid, MessageReceiver>>>Implementations§
Source§impl Flows
impl Flows
Sourcepub async fn new(
layout: Arc<DataflowLayout>,
flows: impl AsyncFnOnce(&mut FlowsBuilder) -> Result<()>,
) -> Result<Self>
pub async fn new( layout: Arc<DataflowLayout>, flows: impl AsyncFnOnce(&mut FlowsBuilder) -> Result<()>, ) -> Result<Self>
Creates a new Flows instance with a Building async closure
Examples found in repository?
examples/service_flows.rs (lines 23-27)
6async fn main() -> Result<()> {
7 let mut layout = DataflowLayout::new();
8
9 let (_service, queryable) = layout
10 .node("service", async |builder: &mut NodeIOBuilder| {
11 builder.queryable("queryable")
12 })
13 .await;
14
15 let (_client, query) = layout
16 .node("client", async |builder: &mut NodeIOBuilder| {
17 builder.query("query")
18 })
19 .await;
20
21 let layout = layout.build();
22
23 let _flows = Flows::new(layout.clone(), async move |builder: &mut FlowsBuilder| {
24 builder.connect(query, queryable, None)?;
25
26 Ok(())
27 })
28 .await?;
29
30 Ok(())
31}More examples
examples/simple_flows.rs (lines 29-34)
6async fn main() -> Result<()> {
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 Ok(())
38}Sourcepub fn node_io(
&self,
clock: Arc<HLC>,
source: NodeLayout,
) -> (Inputs, Outputs, Queries, Queryables)
pub fn node_io( &self, clock: Arc<HLC>, source: NodeLayout, ) -> (Inputs, Outputs, Queries, Queryables)
This is intended to be used only by the Runtime when loading nodes
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Flows
impl !RefUnwindSafe for Flows
impl Send for Flows
impl Sync for Flows
impl Unpin for Flows
impl !UnwindSafe for Flows
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more