Module: Igniter::Store::Codecs

Defined in:
lib/igniter/store/codecs.rb

Overview

Pluggable per-segment codec system for SegmentedFileBackend.

Each codec owns the write side (how a Fact becomes bytes in a segment) and the read side (how segment bytes become Facts on replay).

Codec lifecycle per segment:

codec = Codecs.build(:compact_delta)
codec.start_segment(io, store: "readings")   # optional header frame
codec.encode_fact(io, fact)                  # returns bytes written
...
codec.flush(io)                              # flush any buffered data
── seal ──

codec2 = Codecs.build(:compact_delta)
facts  = codec2.decode(io)                   # reads whole segment

Codec instances are stateful and single-use per segment.

Defined Under Namespace

Classes: CompactDelta, JsonCrc32

Class Method Summary collapse

Class Method Details

.build(name) ⇒ Object

Build a fresh codec instance by name.



32
33
34
35
36
37
38
39
40
41
# File 'lib/igniter/store/codecs.rb', line 32

def self.build(name)
  case name.to_sym
  when :json_crc32
    JsonCrc32.new
  when :compact_delta, :"compact_delta_zlib"
    CompactDelta.new
  else
    raise ArgumentError, "Unknown codec: #{name.inspect}"
  end
end