summaryrefslogtreecommitdiff
path: root/ocaml/lib/eventlog.mli
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-20 13:13:39 +0700
committerpolwex <polwex@sortug.com>2025-10-20 13:13:39 +0700
commitd21900836f89b2bf9cd55ff1708a4619c8b89656 (patch)
treebb3a5842ae408ffa465814c6bbf27a5002866252 /ocaml/lib/eventlog.mli
neoinityes
Diffstat (limited to 'ocaml/lib/eventlog.mli')
-rw-r--r--ocaml/lib/eventlog.mli41
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