# frozen_string_literal: true module Paquito class SingleBytePrefixVersion def initialize(current_version, coders) @current_version = current_version @coders = coders.transform_values { |c| Paquito.cast(c) } @current_coder = coders.fetch(current_version) end def dump(object) @current_version.chr(Encoding::BINARY) << @current_coder.dump(object) end def load(payload) payload_version = payload.getbyte(0) unless payload_version raise UnsupportedCodec, "Missing version byte." end coder = @coders.fetch(payload_version) do raise UnsupportedCodec, "Unsupported packer version #{payload_version}" end coder.load(payload.byteslice(1..-1)) end end end