reactive_graph_std_value/behaviour/component/value_debugger/
mod.rs

1use 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 {}