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
-
.build(name) ⇒ Object
Build a fresh codec instance by name.
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 |