reactive_graph_std_value/behaviour/component/value_debugger/
mod.rs1use log::debug;
2use reactive_graph_behaviour_model_api::BehaviourConnect;
3use reactive_graph_behaviour_model_api::BehaviourConnectFailed;
4use reactive_graph_behaviour_model_api::BehaviourDisconnect;
5use reactive_graph_behaviour_model_api::BehaviourFsm;
6use reactive_graph_behaviour_model_api::BehaviourInit;
7use reactive_graph_behaviour_model_api::BehaviourShutdown;
8use reactive_graph_behaviour_model_api::BehaviourTransitions;
9use reactive_graph_behaviour_model_api::PropertyObserverContainer;
10use reactive_graph_behaviour_model_api::behaviour_validator;
11use reactive_graph_behaviour_model_impl::entity_behaviour;
12use reactive_graph_graph::prelude::*;
13use reactive_graph_reactive_model_impl::ReactiveEntity;
14use serde_json::Value;
15use uuid::Uuid;
16
17pub use functions::*;
18use reactive_graph_std_value_model::ValueProperties;
19
20pub mod functions;
21
22entity_behaviour!(
23 ValueDebugger,
24 ValueDebuggerFactory,
25 ValueDebuggerFsm,
26 ValueDebuggerBehaviourTransitions,
27 ValueDebuggerValidator,
28 f,
29 ValueDebuggerFunction
30);
31
32behaviour_validator!(ValueDebuggerValidator, Uuid, ReactiveEntity, ValueProperties::VALUE.as_ref());
33
34impl BehaviourInit<Uuid, ReactiveEntity> for ValueDebuggerBehaviourTransitions {}
35
36impl BehaviourConnect<Uuid, ReactiveEntity> for ValueDebuggerBehaviourTransitions {
37 fn connect(&self) -> Result<(), BehaviourConnectFailed> {
38 let f = self.f;
39 self.property_observers
40 .observe_with_handle(ValueProperties::VALUE.as_ref(), move |v: &Value| f(v.clone()));
41 debug!("Starting debugging of {}[{}]", &self.property_observers.reactive_instance, ValueProperties::VALUE.as_ref());
42 Ok(())
43 }
44}
45
46impl BehaviourShutdown<Uuid, ReactiveEntity> for ValueDebuggerBehaviourTransitions {}
47impl BehaviourTransitions<Uuid, ReactiveEntity> for ValueDebuggerBehaviourTransitions {}