Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions lib_eio/unix/eio_unix.ml
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,25 @@ module Stdenv = struct
debug : Eio.Debug.t;
backend_id: string;
>

let with_env
?stdin ?stdout ?stderr ?net ?domain_mgr
?process_mgr ?clock ?mono_clock ?fs ?cwd
?secure_random ?debug ?backend_id (env : base) : base
=
object
method stdin = Option.value ~default:env#stdin stdin
method stdout = Option.value ~default:env#stdout stdout
method stderr = Option.value ~default:env#stderr stderr
method net = Option.value ~default:env#net net
method domain_mgr = Option.value ~default:env#domain_mgr domain_mgr
method process_mgr = Option.value ~default:env#process_mgr process_mgr
method clock = Option.value ~default:env#clock clock
method mono_clock = Option.value ~default:env#mono_clock mono_clock
method fs = Option.value ~default:env#fs fs
method cwd = Option.value ~default:env#cwd cwd
method secure_random = Option.value ~default:env#secure_random secure_random
method debug = Option.value ~default:env#debug debug
method backend_id = Option.value ~default:env#backend_id backend_id
end
end
20 changes: 20 additions & 0 deletions lib_eio/unix/eio_unix.mli
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,26 @@ module Stdenv : sig
(** The common set of features provided by all traditional operating systems (BSDs, Linux, Mac, Windows).

You can use the functions in {!Eio.Stdenv} to access these fields if you prefer. *)

val with_env :
?stdin:source_ty r ->
?stdout:sink_ty r ->
?stderr:sink_ty r ->
?net:[ `Generic | `Unix ] Eio.Net.ty r ->
?domain_mgr:Eio.Domain_manager.ty r ->
?process_mgr:Process.mgr_ty r ->
?clock:float Eio.Time.clock_ty r ->
?mono_clock:Eio.Time.Mono.ty r ->
?fs:Eio.Fs.dir_ty Eio.Path.t ->
?cwd:Eio.Fs.dir_ty Eio.Path.t ->
?secure_random:Eio.Flow.source_ty r ->
?debug:Eio.Debug.t ->
?backend_id:string ->
base ->
base
(** [with_env env] allows you to replace parts of [env] with new resources.

By default it will select the resource from [env]. *)
end

(** API for Eio backends only. *)
Expand Down