reactive_graph_std_state/behaviour/component/state_debugger/
mod.rs

1use log::debug;
2use reactive_graph_behaviour_model_api::behaviour_validator;
3use reactive_graph_behaviour_model_api::prelude::*;
4use reactive_graph_behaviour_model_impl::entity_behaviour;
5use reactive_graph_reactive_model_impl::ReactiveEntity;
6use serde_json::Value;
7use uuid::Uuid;
8
9pub use functions::*;
10use reactive_graph_graph::PropertyInstanceGetter;
11use reactive_graph_graph::PropertyInstanceSetter;
12use reactive_graph_std_state_model::StateProperties;
13
14pub mod functions;
15
16entity_behaviour!(
17    StateDebugger,
18    StateDebuggerFactory,
19    StateDebuggerFsm,
20    StateDebuggerBehaviourTransitions,
21    StateDebuggerValidator,
22    f,
23    StateDebuggerFunction
24);
25
26behaviour_validator!(StateDebuggerValidator, Uuid, ReactiveEntity, StateProperties::STATE.as_ref());
27
28impl BehaviourInit<Uuid, ReactiveEntity> for StateDebuggerBehaviourTransitions {}
29
30impl BehaviourConnect<Uuid, ReactiveEntity> for StateDebuggerBehaviourTransitions {
31    fn connect(&self) -> Result<(), BehaviourConnectFailed> {
32        let reactive_instance = self.property_observers.reactive_instance.clone();
33        let f = self.f;
34        self.property_observers
35            .observe_with_handle(StateProperties::STATE.as_ref(), move |v: &Value| f(v.clone(), reactive_instance.clone()));
36        debug!("Starting debugging of {}[{}]", &self.property_observers.reactive_instance, StateProperties::STATE.as_ref());
37        Ok(())
38    }
39}
40
41impl BehaviourShutdown<Uuid, ReactiveEntity> for StateDebuggerBehaviourTransitions {}
42impl BehaviourTransitions<Uuid, ReactiveEntity> for StateDebuggerBehaviourTransitions {}