diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-07-15 14:00:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-15 14:00:27 -0400 |
commit | bd6ebb32df11641e148fd0adca41e7188f16afce (patch) | |
tree | 60989e11495a301a93eea3253cfa49c17d1dea1a /tools/hyper_hello/hyper_hello.rs | |
parent | 1fde15c0bc77e0c5cc6f7cbf27b4e072e1ad6c46 (diff) |
hyper_hello should be in its own crate (#2641)
So that "cargo build" will build it when the gn frontend is eventually
removed.
Diffstat (limited to 'tools/hyper_hello/hyper_hello.rs')
-rw-r--r-- | tools/hyper_hello/hyper_hello.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/hyper_hello/hyper_hello.rs b/tools/hyper_hello/hyper_hello.rs new file mode 100644 index 000000000..dc4dceb06 --- /dev/null +++ b/tools/hyper_hello/hyper_hello.rs @@ -0,0 +1,39 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +// Adapted from https://github.com/hyperium/hyper/blob/master/examples/hello.rs + +#![deny(warnings)] +extern crate hyper; + +use hyper::rt::{self, Future}; +use hyper::service::service_fn_ok; +use hyper::{Body, Response, Server}; +use std::env; + +static PHRASE: &'static [u8] = b"Hello World!"; + +fn main() { + let mut port: u16 = 4544; + if let Some(custom_port) = env::args().nth(1) { + port = custom_port.parse::<u16>().unwrap(); + } + + let addr = ([127, 0, 0, 1], port).into(); + + // new_service is run for each connection, creating a 'service' + // to handle requests for that specific connection. + let new_service = || { + // This is the `Service` that will handle the connection. + // `service_fn_ok` is a helper to convert a function that + // returns a Response into a `Service`. + service_fn_ok(|_| Response::new(Body::from(PHRASE))) + }; + + let server = Server::bind(&addr) + .tcp_nodelay(true) + .serve(new_service) + .map_err(|e| eprintln!("server error: {}", e)); + + println!("Listening on http://{}", addr); + + rt::run(server); +} |