Algostream_infrastructure_event_bus.Event_logAppend-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.
module Writer : sig ... endAppend-only writer. Not thread-safe — use one writer per file.
module Reader : sig ... endRead-only iterator over a log file.
val replay :
Event_bus.t ->
path:string ->
?speed:float ->
?filter:Subscription.Filter.t ->
unit ->
intStream 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.