From 069643465f1d34eceb7923a3e7f12da352ef98c7 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sun, 25 Sep 2022 23:13:52 +0200 Subject: [PATCH] allow to specify the number of parallel downloads as boot parameter --- mirage/config.ml | 10 +++++++++- mirage/unikernel.ml | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/mirage/config.ml b/mirage/config.ml index 0937bd4..2104f9d 100644 --- a/mirage/config.ml +++ b/mirage/config.ml @@ -20,6 +20,14 @@ let remote = in Key.(create "remote" Arg.(opt string "https://github.com/ocaml/opam-repository.git#master" doc)) +let parallel_downloads = + let doc = + Key.Arg.info + ~doc:"Amount of parallel HTTP downloads" + ["parallel-downloads"] + in + Key.(create "parallel-downloads" Arg.(opt int 20 doc)) + let hook_url = let doc = Key.Arg.info @@ -40,7 +48,7 @@ let tls_authenticator = let mirror = foreign "Unikernel.Make" - ~keys:[ Key.v check ; Key.v remote ; Key.v hook_url ; Key.v tls_authenticator ; Key.v port ] + ~keys:[ Key.v check ; Key.v remote ; Key.v parallel_downloads ; Key.v hook_url ; Key.v tls_authenticator ; Key.v port ] ~packages:[ package ~min:"0.1.0" ~sublibs:[ "mirage" ] "paf" ; package "h2" ; diff --git a/mirage/unikernel.ml b/mirage/unikernel.ml index d69680c..42e11cd 100644 --- a/mirage/unikernel.ml +++ b/mirage/unikernel.ml @@ -629,7 +629,7 @@ stamp: %S "https://github.com/Opsian/opsian-ocaml/releases/download/0.1/0.1.tar.gz" k)) urls in - let pool = Lwt_pool.create 20 (Fun.const Lwt.return_unit) in + let pool = Lwt_pool.create (Key_gen.parallel_downloads ()) (Fun.const Lwt.return_unit) in Lwt_list.iter_p (fun (url, csums) -> Lwt_pool.use pool @@ fun () -> HM.fold (fun h v r ->