reactive_graph_std_state/behaviour/component/state_debugger/
mod.rs1use 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 {}