use super::*;
use crate::core::{circuitbreaker, flow, hotspot, isolation, system};
fn flow_rule_updater(rules: Vec<Arc<flow::Rule>>) -> Result<bool> {
Ok(flow::load_rules(rules))
}
pub fn new_flow_rule_handler(
converter: PropertyConverter<flow::Rule>,
) -> Arc<impl PropertyHandler<flow::Rule>> {
DefaultPropertyHandler::new(converter, flow_rule_updater)
}
fn system_rule_updater(rules: Vec<Arc<system::Rule>>) -> Result<bool> {
system::load_rules(rules);
Ok(true)
}
pub fn new_system_rule_handler(
converter: PropertyConverter<system::Rule>,
) -> Arc<impl PropertyHandler<system::Rule>> {
DefaultPropertyHandler::new(converter, system_rule_updater)
}
fn circuitbreaker_rule_updater(rules: Vec<Arc<circuitbreaker::Rule>>) -> Result<bool> {
Ok(circuitbreaker::load_rules(rules))
}
pub fn new_circuitbreaker_rule_handler(
converter: PropertyConverter<circuitbreaker::Rule>,
) -> Arc<impl PropertyHandler<circuitbreaker::Rule>> {
DefaultPropertyHandler::new(converter, circuitbreaker_rule_updater)
}
fn isolation_rule_updater(rules: Vec<Arc<isolation::Rule>>) -> Result<bool> {
isolation::load_rules(rules);
Ok(true)
}
pub fn new_isolation_rule_handler(
converter: PropertyConverter<isolation::Rule>,
) -> Arc<impl PropertyHandler<isolation::Rule>> {
DefaultPropertyHandler::new(converter, isolation_rule_updater)
}
fn hotspot_rule_updater(rules: Vec<Arc<hotspot::Rule>>) -> Result<bool> {
Ok(hotspot::load_rules(rules))
}
pub fn new_hotspot_rule_handler(
converter: PropertyConverter<hotspot::Rule>,
) -> Arc<impl PropertyHandler<hotspot::Rule>> {
DefaultPropertyHandler::new(converter, hotspot_rule_updater)
}