1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//! Async sink of time-series data based on serde-rs //! //! Example //! -------- //! //! ```rust //! extern crate asink; //! extern crate serde; //! #[macro_use] //! extern crate serde_derive; //! //! use asink::*; //! use std::sync::mpsc::Sender; //! //! /// This will be serialized into msgpack //! #[derive(Serialize)] //! struct Doc { //! id: usize, //! data: Vec<f64>, //! } //! //! fn experiment(s: Sender<Doc>) { //! for i in 0..5 { //! let doc = Doc { //! id: i, //! data: vec![i as f64], //! }; //! s.send(doc).unwrap(); // Send data to sink //! } //! } //! //! fn main() { //! let sink = msgpack::MsgpackSink::from_str("test.msg"); //! let (s, th) = sink.run(); // Sink start thread to write recieved data into msgpack //! experiment(s); //! th.join().unwrap(); //! } //! ``` extern crate bson; #[macro_use] extern crate derive_new; extern crate mongodb; extern crate rmp; extern crate rmp_serde; extern crate serde; extern crate serde_json; use serde::Serialize; use std::thread::JoinHandle; use std::sync::mpsc::Sender; pub mod mongo; pub mod msgpack; pub mod json; /// Sink trait for storing time-series data pub trait Sink<Document: Send + Serialize> { /// Start a thread for sink fn run(self) -> (Sender<Document>, JoinHandle<()>); }