tower-hyper 0.1.1

A hyper based tower transport layer.
Documentation
use futures::Future;
use hyper::service::service_fn_ok;
use hyper::{Body, Response, Server};
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::sync::atomic::{AtomicUsize, Ordering};

pub fn server(addr: SocketAddr, http2_only: bool) -> impl Future<Item = (), Error = ()> {
    let make_service = || service_fn_ok(|_req| Response::new(Body::from("Hello World")));

    Server::bind(&addr)
        .http2_only(http2_only)
        .serve(make_service)
        .map_err(|e| panic!("{}", e))
}

static NEXT_PORT: AtomicUsize = AtomicUsize::new(1234);
pub fn next_addr() -> SocketAddr {
    let port = NEXT_PORT.fetch_add(1, Ordering::AcqRel) as u16;
    SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), port)
}