routee_compass/plugin/input/default/load_balancer/
plugin.rs1use 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}