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
// Copyright 2015 Nathan Sizemore <nathanrsizemore@gmail.com>
//
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v. 2.0. If a copy of the MPL was not
// distributed with this file, You can obtain one at
// http://mozilla.org/MPL/2.0/.



#[macro_use]
extern crate log;
extern crate libc;
extern crate errno;
extern crate openssl;
#[macro_use]
extern crate bitflags;

use std::io::Error;

use frame::Frame;

pub use plain::*;
pub use socket::*;
pub use secure::*;

pub mod frame;
mod socket;
mod plain;
mod secure;


pub trait Blocking {
    fn b_recv(&mut self) -> Result<Box<Frame>, Error>;
    fn b_send(&mut self, frame: &Frame) -> Result<(), Error>;
}

pub trait NonBlocking {
    fn nb_recv(&mut self) -> Result<Vec<Box<Frame>>, Error>;
    fn nb_send(&mut self, frame: &Frame) -> Result<(), Error>;
}