package moonpool

  1. Overview
  2. Docs

Module Moonpool.Task_local_storageSource

Task-local storage.

This storage is associated to the current task, just like thread-local storage is associated with the current thread. The storage is carried along in case the current task is suspended.

  • since 0.6
Sourceval create : unit -> 'a t

create () makes a new key. Keys are expensive and should never be allocated dynamically or in a loop.

Sourceexception Not_set
Sourceval get_exn : 'a t -> 'a

get k gets the value for the current task for key k. Must be run from inside a task running on a runner.

Sourceval get_opt : 'a t -> 'a option

get_opt k gets the current task's value for key k, or None if not run from inside the task.

Sourceval get : 'a t -> default:'a -> 'a
Sourceval set : 'a t -> 'a -> unit

set k v sets the storage for k to v. Must be run from inside a task running on a runner.

Sourceval with_value : 'a t -> 'a -> (unit -> 'b) -> 'b

with_value k v f sets k to v for the duration of the call to f(). When f() returns (or fails), k is restored to its old value.

Local Hmap.t

This requires hmap to be installed.

Sourceval k_local_hmap : Hmap.t Picos.Fiber.FLS.t

A local hmap, inherited in children fibers

Sourceval get_local_hmap : unit -> Hmap.t

Access the local hmap, or an empty one if not set

Sourceval set_local_hmap : Hmap.t -> unit
Sourceval update_local_hmap : (Hmap.t -> Hmap.t) -> unit
Sourceval get_in_local_hmap_exn : 'a Hmap.key -> 'a
Sourceval get_in_local_hmap_opt : 'a Hmap.key -> 'a option
Sourceval remove_in_local_hmap : 'a Hmap.key -> unit

Remove given key from the local hmap

Sourceval set_in_local_hmap : 'a Hmap.key -> 'a -> unit
Sourceval with_in_local_hmap : 'a Hmap.key -> 'a -> (unit -> 'b) -> 'b

with_in_local_hmap k v f calls f() in a context where k is bound to v in the local hmap. Then it restores the previous binding for k.