Module Algostream_infrastructure_event_bus.Event_log

Append-only binary event log with bin_prot framing.

File layout:

+----------------------------------------------------------+
| Header (64 bytes)                                        |
|   magic        : int32 LE  (0x41534454, "ASDT")          |
|   version      : int32 LE  (3 — writer; reader takes 2)  |
|   record_size  : int32 LE  (0 — variable)                |
|   record_count : int64 LE  (updated on close, may be 0)  |
|   start_time   : int64 LE  (first event timestamp_ns)    |
|   end_time     : int64 LE  (last event timestamp_ns)     |
|   reserved     : 28 bytes                                |
+----------------------------------------------------------+
| Frame: u32 length | u32 crc32 | bin_prot(Event.t) bytes  |
| ... repeated ...                                         |
+----------------------------------------------------------+

Plain stdlib file I/O is used; mmap support in Memory_mapped is a no-op stub in portable mode. CRC32 (IEEE 802.3 polynomial) protects each frame; on read, the first bad CRC truncates the iteration.

val magic : int32
val version : int32
val header_size : int
module Writer : sig ... end

Append-only writer. Not thread-safe — use one writer per file.

module Reader : sig ... end

Read-only iterator over a log file.

val replay : Event_bus.t -> path:string -> ?speed:float -> ?filter:Subscription.Filter.t -> unit -> int

Stream events from path into bus. speed scales replay relative to real time (1.0 = real-time, 10.0 = 10x faster, Float.infinity = as fast as possible). filter is applied before publishing.

Returns the number of events published.