[][src]Module streamson_lib::handler::buffer

Handler which buffers output which can be manually extracted

Example

use streamson_lib::{handler, matcher, Collector};
use std::sync::{Arc, Mutex};

let buffer_handler = Arc::new(Mutex::new(handler::Buffer::new().set_show_path(true)));

let matcher = matcher::Simple::new(r#"{"users"}[]{"name"}"#).unwrap();

let mut collector = Collector::new();

// Set the matcher for collector
collector.add_matcher(Box::new(matcher), &[buffer_handler.clone()]);

for input in vec![
    br#"{"users": [{"id": 1, "name": "first"}, {"#.to_vec(),
    br#""id": 2, "name": "second}]}"#.to_vec(),
] {
    collector.process(&input).unwrap();
    let mut guard = buffer_handler.lock().unwrap();
    while let Some((path, data)) = guard.pop() {
        // Do something with the data
        println!("{} (len {})", path.unwrap(), data.len());
    }
}

Structs

Buffer

Buffer handler responsible for storing slitted JSONs into memory