Skip to content

Instantly share code, notes, and snippets.

@yoshuawuyts
Created May 27, 2018 09:51
Show Gist options
  • Save yoshuawuyts/1188afdf8277f26c63c0e6c7bb373d47 to your computer and use it in GitHub Desktop.
Save yoshuawuyts/1188afdf8277f26c63c0e6c7bb373d47 to your computer and use it in GitHub Desktop.
#![cfg_attr(feature = "nightly", deny(missing_docs))]
#![cfg_attr(feature = "nightly", feature(external_doc))]
#![cfg_attr(feature = "nightly", doc(include = "../README.md"))]
#![cfg_attr(test, deny(warnings))]
#![cfg_attr(test, feature(plugin))]
#![cfg_attr(test, plugin(clippy))]
#[macro_use]
extern crate structopt;
extern crate actix_web;
extern crate failure;
extern crate listenfd;
extern crate access;
use actix_web::{server};
use failure::Error;
use listenfd::ListenFd;
use structopt::StructOpt;
use access::create_app;
#[derive(StructOpt, Debug)]
struct Opts {
/// TCP port to listen to.
#[structopt(short = "p", default_value = "8080")]
port: usize,
}
fn main() -> Result<(), Error> {
let opts = Opts::from_args();
let server = server::new(create_app);
let mut listenfd = ListenFd::from_env();
let server = if let Some(listener) = listenfd.take_tcp_listener(0)? {
let url = format!("127.0.0.1:{}", listener.local_addr()?.port());
let server = server.listen(listener);
println!("listening on {}", &url);
server
} else {
let url = format!("127.0.0.1:{}", opts.port);
let server = server.bind(&url)?;
println!("listening on {}", &url);
server
};
server.run();
Ok(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment