|
@@ -2,11 +2,11 @@ extern crate may;
|
|
extern crate num_cpus;
|
|
extern crate num_cpus;
|
|
#[macro_use]
|
|
#[macro_use]
|
|
extern crate serde_derive;
|
|
extern crate serde_derive;
|
|
-extern crate serde_json;
|
|
|
|
extern crate may_minihttp;
|
|
extern crate may_minihttp;
|
|
|
|
+extern crate serde_json;
|
|
|
|
|
|
-use std::io;
|
|
|
|
use may_minihttp::{HttpServer, HttpService, Request, Response};
|
|
use may_minihttp::{HttpServer, HttpService, Request, Response};
|
|
|
|
+use std::io;
|
|
|
|
|
|
#[derive(Serialize)]
|
|
#[derive(Serialize)]
|
|
struct Message<'a> {
|
|
struct Message<'a> {
|
|
@@ -23,8 +23,10 @@ impl HttpService for Techempower {
|
|
match req.path() {
|
|
match req.path() {
|
|
"/json" => {
|
|
"/json" => {
|
|
resp.header("Content-Type", "application/json");
|
|
resp.header("Content-Type", "application/json");
|
|
- *resp.body_mut() =
|
|
|
|
- serde_json::to_vec(&Message { message: "Hello, World!" }).unwrap();
|
|
|
|
|
|
+ *resp.body_mut() = serde_json::to_vec(&Message {
|
|
|
|
+ message: "Hello, World!",
|
|
|
|
+ })
|
|
|
|
+ .unwrap();
|
|
}
|
|
}
|
|
"/plaintext" => {
|
|
"/plaintext" => {
|
|
resp.header("Content-Type", "text/plain")
|
|
resp.header("Content-Type", "text/plain")
|
|
@@ -40,7 +42,18 @@ impl HttpService for Techempower {
|
|
}
|
|
}
|
|
|
|
|
|
fn main() {
|
|
fn main() {
|
|
- may::config().set_io_workers(num_cpus::get());
|
|
|
|
- let server = HttpServer(Techempower).start("0.0.0.0:8080").unwrap();
|
|
|
|
- server.join().unwrap();
|
|
|
|
|
|
+ may::config()
|
|
|
|
+ .set_io_workers(num_cpus::get())
|
|
|
|
+ .set_pool_capacity(20000)
|
|
|
|
+ .set_stack_size(0x800);
|
|
|
|
+
|
|
|
|
+ let mut servers = Vec::new();
|
|
|
|
+ for _ in 0..num_cpus::get() {
|
|
|
|
+ let server = HttpServer(Techempower).start("0.0.0.0:8080").unwrap();
|
|
|
|
+ servers.push(server);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for server in servers {
|
|
|
|
+ server.join().unwrap();
|
|
|
|
+ }
|
|
}
|
|
}
|