Expand description
Handler which stores indexes where matched data are kept. The data should be within <start_idx, end_idx) range
§Example
use streamson_lib::{handler, matcher, strategy::{self, Strategy}};
use std::sync::{Arc, Mutex};
let indexer_handler = Arc::new(Mutex::new(handler::Indexer::new().set_use_path(true)));
let matcher = matcher::Simple::new(r#"{"users"}[]{"name"}"#).unwrap();
let mut trigger = strategy::Trigger::new();
// Set the matcher for trigger
trigger.add_matcher(Box::new(matcher), indexer_handler.clone());
for input in vec![
br#"{"users": [{"id": 1, "name": "first"}, {"#.to_vec(),
br#""id": 2, "name": "second}]}"#.to_vec(),
] {
trigger.process(&input).unwrap();
let mut guard = indexer_handler.lock().unwrap();
while let Some((path, output)) = guard.pop() {
// Do something with the data
println!("{} ({:?})", path.unwrap(), output);
}
}
Structs§
- Indexer
- Indexer handler responsible for storing index of the matches