somatize_runtime/executors/
simple.rs1use crate::EventBus;
7use crate::filter_library::FilterLibrary;
8use crate::runner::Runner;
9
10use somatize_compiler::{CompileMode, compile};
11use somatize_core::cache::CacheStore;
12use somatize_core::error::Result;
13use somatize_core::graph::Graph;
14use somatize_core::value::Value;
15use std::collections::HashMap;
16use std::sync::Arc;
17
18pub struct SimpleExecutor;
20
21impl SimpleExecutor {
22 #[allow(clippy::too_many_arguments)]
24 pub fn run(
25 &self,
26 runner: &dyn Runner,
27 graph: &Graph,
28 filters: &FilterLibrary,
29 cache: &dyn CacheStore,
30 event_bus: &Arc<EventBus>,
31 x: &Value,
32 y: Option<&Value>,
33 ) -> Result<(Value, HashMap<String, Value>)> {
34 graph.validate()?;
35
36 let plan = compile(graph, filters, CompileMode::NoCache, Some(cache))?.plan;
37 runner.fit(&plan, filters, cache, event_bus, x, y)
38 }
39
40 pub fn forward(
42 &self,
43 runner: &dyn Runner,
44 graph: &Graph,
45 filters: &FilterLibrary,
46 cache: &dyn CacheStore,
47 event_bus: &Arc<EventBus>,
48 x: &Value,
49 ) -> Result<Value> {
50 let plan = compile(graph, filters, CompileMode::Inference, Some(cache))?.plan;
51 runner.forward(&plan, filters, cache, event_bus, x)
52 }
53}