package ambient-context

  1. Overview
  2. Docs
Abstraction over thread-local / continuation-local storage mechanisms for communication with transitive dependencies

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ambient-context-0.2.tbz
sha256=f451f4ed467ef0c15f472cda1021a89e96afdf3a32970ea047faf057a01c72d3
sha512=3115fd7b45ac171f7a971013dd6f32ec317fc274d800a86870a0dd43574e27b404090fbc51dae5e4c8af4961d706f84abf3843a6cf8dc57f711211cd2b547780

doc/ambient-context.core/Ambient_context_core/Storage/index.html

Module Ambient_context_core.StorageSource

Storage implementation.

There is a singleton storage for a given program, responsible for providing ambient context to the rest of the program.

Sourcetype t = {
  1. name : string;
  2. get_context : unit -> Context.t;
  3. with_context : 'a. Context.t -> (unit -> 'a) -> 'a;
}

Storage type

Sourceval name : t -> string

Name of the storage implementation.

Sourceval get_context : t -> Context.t

Get the context from the current storage, or Hmap.empty if there is no ambient context.

Sourceval with_context : t -> Context.t -> (unit -> 'a) -> 'a

with_context storage ctx f calls f() in an ambient context in which get_context() will return ctx. Once f() returns, the storage is reset to its previous value.

Sourceval get : t -> 'a Context.key -> 'a option

Get the ambient context and then look up k in it

Sourceval with_key_bound_to : t -> 'a Hmap.key -> 'a -> (unit -> 'b) -> 'b

with_key_bound_to storage k v f calls f() in a context updated to have k map to v.

Sourceval with_key_unbound : t -> 'a Hmap.key -> (unit -> 'b) -> 'b

with_key_unbound storage k f calls f() in a context updated to have k bound to no value.