aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/Journal.mli
blob: d354e031fbbc473075596b0267aeff55a1082c0d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(** a namespace that keeps its history: each binding it accepts is a
    commit of [Protocols.Journal]. It answers [Directory] and [Registry]
    as a plain namespace does, so a subsystem that only knows those
    commits without knowing it. *)

(** a journal whose first commit, numbered 0, binds [bindings]. *)
val make : ?bindings:(string * Protocols.Handle.t) list -> unit -> Protocols.Handle.t

(** a journal whose first commit binds whatever [directory] binds now. *)
val adopt : Protocols.Handle.t -> (Protocols.Handle.t, Concepts.Condition.condition) result

(** a directory of [bindings] that, asked for a derived relation, hands
    it out read against itself. *)
val snapshot : (string * Protocols.Handle.t) list -> Protocols.Handle.t

(** bind each name to its handle, or unbind it, whatever it was bound to
    before: as one commit when [directory] is a journal, and one name at
    a time when it is a plain namespace. *)
val rebind :
  Protocols.Handle.t ->
  (string * Protocols.Handle.t option) list ->
  (unit, Concepts.Condition.condition) result