sentinel_core/datasource/
helpers.rs

1use super::*;
2use crate::core::{circuitbreaker, flow, hotspot, isolation, system};
3
4/// flow_rule_updater load the flow::Rule vector to downstream flow component.
5fn flow_rule_updater(rules: Vec<Arc<flow::Rule>>) -> Result<bool> {
6    Ok(flow::load_rules(rules))
7}
8
9pub fn new_flow_rule_handler(
10    converter: PropertyConverter<flow::Rule>,
11) -> Arc<impl PropertyHandler<flow::Rule>> {
12    DefaultPropertyHandler::new(converter, flow_rule_updater)
13}
14
15/// system_rule_updater load the system::Rule vector to downstream flow component.
16fn system_rule_updater(rules: Vec<Arc<system::Rule>>) -> Result<bool> {
17    system::load_rules(rules);
18    Ok(true)
19}
20
21pub fn new_system_rule_handler(
22    converter: PropertyConverter<system::Rule>,
23) -> Arc<impl PropertyHandler<system::Rule>> {
24    DefaultPropertyHandler::new(converter, system_rule_updater)
25}
26
27/// circuitbreaker_rule_updater load the circuitbreaker::Rule vector to downstream flow component.
28fn circuitbreaker_rule_updater(rules: Vec<Arc<circuitbreaker::Rule>>) -> Result<bool> {
29    Ok(circuitbreaker::load_rules(rules))
30}
31
32pub fn new_circuitbreaker_rule_handler(
33    converter: PropertyConverter<circuitbreaker::Rule>,
34) -> Arc<impl PropertyHandler<circuitbreaker::Rule>> {
35    DefaultPropertyHandler::new(converter, circuitbreaker_rule_updater)
36}
37
38/// isolation_rule_updater load the isolation::Rule vector to downstream flow component.
39fn isolation_rule_updater(rules: Vec<Arc<isolation::Rule>>) -> Result<bool> {
40    isolation::load_rules(rules);
41    Ok(true)
42}
43
44pub fn new_isolation_rule_handler(
45    converter: PropertyConverter<isolation::Rule>,
46) -> Arc<impl PropertyHandler<isolation::Rule>> {
47    DefaultPropertyHandler::new(converter, isolation_rule_updater)
48}
49
50/// hotspot_rule_updater load the hotspot::Rule vector to downstream flow component.
51fn hotspot_rule_updater(rules: Vec<Arc<hotspot::Rule>>) -> Result<bool> {
52    Ok(hotspot::load_rules(rules))
53}
54
55pub fn new_hotspot_rule_handler(
56    converter: PropertyConverter<hotspot::Rule>,
57) -> Arc<impl PropertyHandler<hotspot::Rule>> {
58    DefaultPropertyHandler::new(converter, hotspot_rule_updater)
59}