let src = Logs.Src.create "requests.timeout" ~doc:"HTTP Request Timeouts" module Log = (val Logs.src_log src : Logs.LOG) type t = { connect : float option; read : float option; total : float option; } let none = { connect = None; read = None; total = None; } let create ?connect ?read ?total () = { connect; read; total; } let default = { connect = Some 10.0; read = Some 30.0; total = None; } let connect t = t.connect let read t = t.read let total t = t.total let pp ppf t = let items = [] in let items = match t.connect with | Some c -> (Printf.sprintf "connect:%.1fs" c) :: items | None -> items in let items = match t.read with | Some r -> (Printf.sprintf "read:%.1fs" r) :: items | None -> items in let items = match t.total with | Some tot -> (Printf.sprintf "total:%.1fs" tot) :: items | None -> items in match items with | [] -> Format.fprintf ppf "no timeouts" | _ -> Format.fprintf ppf "%s" (String.concat ", " (List.rev items))