Skip to main content

routee_compass/plugin/input/default/load_balancer/
plugin.rs

1use std::sync::Arc;
2
3use super::weight_heuristic::WeightHeuristic;
4use crate::app::search::SearchApp;
5use crate::plugin::input::input_plugin::InputPlugin;
6use crate::plugin::input::InputJsonExtensions;
7use crate::plugin::input::InputPluginError;
8
9pub struct LoadBalancerPlugin {
10    pub heuristic: WeightHeuristic,
11}
12
13const NAME: &str = "load_balancer";
14
15impl InputPlugin for LoadBalancerPlugin {
16    fn process(
17        &self,
18        query: &mut serde_json::Value,
19        _search_app: Arc<SearchApp>,
20    ) -> Result<(), InputPluginError> {
21        let w = self.heuristic.estimate_weight(query)?;
22        let _updated = query.clone();
23        query.add_query_weight_estimate(w)?;
24        Ok(())
25    }
26
27    fn name(&self) -> &str {
28        NAME
29    }
30}