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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#![recursion_limit = "1024"]
extern crate backtrace;
#[macro_use] extern crate error_chain;
extern crate chrono;
extern crate data_encoding;
#[macro_use] extern crate futures;
#[macro_use] extern crate lazy_static;
#[macro_use] extern crate log;
#[cfg(feature = "mio_client")]
extern crate mio;
#[cfg(feature = "openssl")]
extern crate openssl;
extern crate rand;
extern crate rustc_serialize;
extern crate time;
#[macro_use] extern crate tokio_core;
pub mod error;
pub mod logger;
pub mod rr;
pub mod op;
pub mod udp;
pub mod tcp;
pub mod client;
pub mod serialize;
use std::io;
use std::net::SocketAddr;
use futures::sync::mpsc::UnboundedSender;
use futures::stream::Stream;
use op::Message;
use client::ClientStreamHandle;
pub type BufStream = Stream<Item=(Vec<u8>, SocketAddr), Error=io::Error>;
pub type BufStreamHandle = UnboundedSender<(Vec<u8>, SocketAddr)>;
pub type MessageStream = Stream<Item=Message, Error=io::Error>;
pub type MessageStreamHandle = UnboundedSender<Message>;
pub struct BufClientStreamHandle {
name_server: SocketAddr,
sender: BufStreamHandle,
}
impl ClientStreamHandle for BufClientStreamHandle {
fn send(&mut self, buffer: Vec<u8>) -> io::Result<()> {
let name_server: SocketAddr = self.name_server;
let sender: &mut _ = &mut self.sender;
sender.send((buffer, name_server)).map_err(|_| io::Error::new(io::ErrorKind::Other, "unknown"))
}
}
include!(concat!(env!("OUT_DIR"), "/version.rs"));
#[test]
fn enable_logging_for_tests() {
use log::LogLevel;
logger::TrustDnsLogger::enable_logging(LogLevel::Debug);
}