reactive_graph_behaviour_service_api/
relation_behaviour_manager.rs1use async_trait::async_trait;
2use springtime_di::injectable;
3
4use reactive_graph_behaviour_model_api::BehaviourTransitionError;
5use reactive_graph_behaviour_model_api::BehaviourTypeId;
6use reactive_graph_graph::RelationInstanceId;
7use reactive_graph_lifecycle::Lifecycle;
8use reactive_graph_reactive_model_impl::ReactiveRelation;
9
10#[injectable]
11#[async_trait]
12pub trait RelationBehaviourManager: Send + Sync + Lifecycle {
13 fn add_behaviours(&self, relation_instance: ReactiveRelation);
15
16 fn add_behaviour(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId);
18
19 fn remove_behaviour(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId);
21
22 fn remove_behaviours(&self, relation_instance: ReactiveRelation);
24
25 fn remove_behaviours_by_key(&self, relation_instance_id: &RelationInstanceId);
27
28 fn remove_behaviours_by_behaviour(&self, behaviour_ty: &BehaviourTypeId);
30
31 fn has(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId) -> bool;
33
34 fn get_all(&self, relation_instance: ReactiveRelation) -> Vec<BehaviourTypeId>;
36
37 fn get_instances_by_behaviour(&self, ty: &BehaviourTypeId) -> Vec<ReactiveRelation>;
39
40 fn connect(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId) -> Result<(), BehaviourTransitionError>;
42
43 fn disconnect(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId) -> Result<(), BehaviourTransitionError>;
45
46 fn reconnect(&self, relation_instance: ReactiveRelation, behaviour_ty: &BehaviourTypeId) -> Result<(), BehaviourTransitionError>;
48}