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;
extern crate derive_new;
extern crate mongodb;
extern crate rmp;
extern crate rmp_serde;
extern crate serde;
extern crate serde_json;
use Serialize;
use JoinHandle;
use Sender;
/// Sink trait for storing time-series data