use std::net::SocketAddr;
use rotor::{Scope, Response, Void};
use rotor::mio::tcp::TcpStream;
use rotor_stream;
mod request;
mod head;
mod protocol;
mod parser;
mod connection;
mod error;
pub use version::Version;
pub use self::request::{Request};
pub use self::protocol::{Client, Requester, Task};
pub use self::head::Head;
pub use self::error::{ResponseError, ProtocolError};
pub use recvmode::RecvMode;
use self::parser::Parser;
pub const MAX_HEADERS_NUM: usize = 256;
pub const MAX_HEADERS_SIZE: usize = 16384;
pub const MAX_CHUNK_HEAD: usize = 128;
pub type Fsm<P, S> = rotor_stream::Stream<Parser<P, S>>;
pub type Persistent<P, S> = rotor_stream::Persistent<Parser<P, S>>;
pub struct Connection {
idle: bool,
}
pub fn connect_tcp<P: Client>(
scope: &mut Scope<<P::Requester as Requester>::Context>,
addr: &SocketAddr, seed: P::Seed)
-> Response<Fsm<P, TcpStream>, Void>
{
let sock = match TcpStream::connect(&addr) {
Ok(sock) => sock,
Err(e) => return Response::error(Box::new(e)),
};
rotor_stream::Stream::new(sock, seed, scope)
}