29 lines
1.1 KiB
OCaml
29 lines
1.1 KiB
OCaml
open Core
|
|
open Async
|
|
open Httpun_async
|
|
|
|
let main port max_accepts_per_batch () =
|
|
let where_to_listen = Tcp.Where_to_listen.of_port port in
|
|
let request_handler _ = Httpun_examples.Server.benchmark in
|
|
let error_handler _ = Httpun_examples.Server.error_handler in
|
|
Tcp.(Server.create_sock ~on_handler_error:`Ignore
|
|
~backlog:11_000 ~max_connections:10_000 ~max_accepts_per_batch where_to_listen)
|
|
(Server.create_connection_handler ~request_handler ~error_handler)
|
|
>>= fun server ->
|
|
Deferred.forever () (fun () ->
|
|
Clock.after Time_float.Span.(of_sec 0.5) >>| fun () ->
|
|
Log.Global.printf "conns: %d" (Tcp.Server.num_connections server));
|
|
Deferred.never ()
|
|
|
|
let () =
|
|
Command.async
|
|
~summary:"Start a hello world Async server"
|
|
Command.Param.(
|
|
map (both
|
|
(flag "-p" (optional_with_default 8080 int)
|
|
~doc:"int Source port to listen on")
|
|
(flag "-a" (optional_with_default 1 int)
|
|
~doc:"int Maximum accepts per batch"))
|
|
~f:(fun (port, accepts) ->
|
|
(fun () -> main port accepts ())))
|
|
|> Command_unix.run
|