package eio

  1. Overview
  2. Docs

The standard environment of a process.

All access to the outside world comes from running the event loop, which provides a t.

Example:

let () =
  Eio_main.run @@ fun env ->
  Eio.Path.with_open_dir env#fs "/srv/www" @@ fun www ->
  serve_files www
    ~net:env#net
type t = < stdin : Flow.source ; stdout : Flow.sink ; stderr : Flow.sink ; net : Net.t ; domain_mgr : Domain_manager.t ; clock : Time.clock ; fs : Fs.dir Path.t ; cwd : Fs.dir Path.t ; secure_random : Flow.source ; debug : Debug.t >

Standard streams

To use these, see Flow.

val stdin : < stdin : Flow.source as 'a.. > -> 'a
val stdout : < stdout : Flow.sink as 'a.. > -> 'a
val stderr : < stderr : Flow.sink as 'a.. > -> 'a

File-system access

To use these, see Path.

val cwd : < cwd : _ Path.t as 'a.. > -> 'a

cwd t is the current working directory of the process (this may change over time if the process does a "chdir" operation, which is not recommended).

val fs : < fs : _ Path.t as 'a.. > -> 'a

fs t is the process's full access to the filesystem.

Paths can be absolute or relative (to the current working directory). Using relative paths with this is similar to using them with cwd, except that this will follow ".." and symlinks to other parts of the filesystem.

fs is useful for handling paths passed in by the user.

Network

To use this, see Net.

val net : < net : Net.t as 'a.. > -> 'a

net t gives access to the process's network namespace.

Domains (using multiple CPU cores)

To use this, see Domain_manager.

val domain_mgr : < domain_mgr : Domain_manager.t as 'a.. > -> 'a

domain_mgr t allows running code on other cores.

Time

To use this, see Time.

val clock : < clock : Time.clock as 'a.. > -> 'a

clock t is the system clock.

Randomness

val secure_random : < secure_random : Flow.source as 'a.. > -> 'a

secure_random t is a source of random bytes suitable for cryptographic purposes.

Debugging

val debug : < debug : < Debug.t.. > as 'a.. > -> 'a

debug t provides privileged controls for debugging.