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
13impl InputPlugin for LoadBalancerPlugin {
14    fn process(
15        &self,
16        query: &mut serde_json::Value,
17        _search_app: Arc<SearchApp>,
18    ) -> Result<(), InputPluginError> {
19        let w = self.heuristic.estimate_weight(query)?;
20        let _updated = query.clone();
21        query.add_query_weight_estimate(w)?;
22        Ok(())
23    }
24}