diff options
Diffstat (limited to 'ocaml/lib/eventlog.mli')
| -rw-r--r-- | ocaml/lib/eventlog.mli | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ocaml/lib/eventlog.mli b/ocaml/lib/eventlog.mli new file mode 100644 index 0000000..8be010f --- /dev/null +++ b/ocaml/lib/eventlog.mli @@ -0,0 +1,41 @@ +(* Event Log - Persistent event storage + * + * Provides append-only event log with replay capability. + *) + +(* Event number (0-indexed) *) +type event_num = int64 + +(* Event metadata *) +type event_meta = { + num: event_num; + mug: int32; (* murmur3 hash *) + size: int; (* size of jammed data *) +} + +(* Event log handle *) +type t + +(* Create event log at pier path + * Creates .urb/log directory structure if needed + * enabled=false disables actual file writes (useful for testing) *) +val create : ?enabled:bool -> string -> t + +(* Append event to log, returns event number *) +val append : ?verbose:bool -> t -> Noun.noun -> event_num + +(* Read single event from log *) +val read_event : ?verbose:bool -> t -> event_num -> Noun.noun + +(* Replay all events sequentially, calling callback for each *) +val replay : ?verbose:bool -> t -> (event_num -> Noun.noun -> unit) -> unit + +(* Get count of events in log *) +val event_count : t -> int + +(* Get last event number (or -1 if empty) *) +val last_event_num : t -> event_num + +(* Disable/enable logging *) +val disable : t -> unit +val enable : t -> unit |
