sentinel_core/datasource/
helpers.rs1use super::*;
2use crate::core::{circuitbreaker, flow, hotspot, isolation, system};
3
4fn 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
15fn 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
27fn 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
38fn 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
50fn 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}