a vault of useful code
snippets
ocaml - use of lwt for
promise handling
(*
Example of using lwt to handle promises.
count_requests uses lwt to resolve the inner_handler promise,
thus counting successes if the promise is successfully resolved
and failures if the promise is rejected or fails, signaled
by the raising of an ocaml exn
*)
let successful = ref 0
let failed = ref 0
let count_requests inner_handler request =
try%lwt
let%lwt response = inner_handler request in
successful := !successful + 1;
Lwt.return response
with exn ->
failed := !failed + 1;
raise exn
let () =
Dream.run
@@ Dream.logger
@@ count_requests
@@ Dream.router [
Dream.get "/fail"
(fun _ ->
raise (Failure "The Web app failed!"));
Dream.get "/" (fun _ ->
Dream.html (Printf.sprintf
"%3i request(s) successful<br>%3i request(s) failed"
!successful !failed));
]