summaryrefslogtreecommitdiff
path: root/tools/hyper_hello/hyper_hello.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-07-15 14:00:27 -0400
committerGitHub <noreply@github.com>2019-07-15 14:00:27 -0400
commitbd6ebb32df11641e148fd0adca41e7188f16afce (patch)
tree60989e11495a301a93eea3253cfa49c17d1dea1a /tools/hyper_hello/hyper_hello.rs
parent1fde15c0bc77e0c5cc6f7cbf27b4e072e1ad6c46 (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.rs39
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);
+}