class Cql::Compression::Lz4Compressor

A compressor that uses the LZ4 compression library.

@note This compressor requires the [lz4-ruby](rubygems.org/gems/lz4-ruby)

gem (v0.3.2 or later required).

Constants

BUFFER_FORMAT

Attributes

algorithm[R]

@return [String]

Public Class Methods

new(min_size=64) click to toggle source

@param [Integer] min_size (64) Don’t compress frames smaller than

this size (see {#compress?}).
# File lib/cql/compression/lz4_compressor.rb, line 21
def initialize(min_size=64)
  @algorithm = 'lz4'.freeze
  @min_size = min_size
end

Public Instance Methods

compress(str) click to toggle source
# File lib/cql/compression/lz4_compressor.rb, line 32
def compress(str)
  [str.bytesize, LZ4::Raw.compress(str.to_s).first].pack(BUFFER_FORMAT)
end
compress?(str) click to toggle source

@return [true, false] will return false for frames smaller than the

`min_size` given to the constructor.
# File lib/cql/compression/lz4_compressor.rb, line 28
def compress?(str)
  str.bytesize > @min_size
end
decompress(str) click to toggle source
# File lib/cql/compression/lz4_compressor.rb, line 36
def decompress(str)
  decompressed_size, compressed_data = str.to_s.unpack(BUFFER_FORMAT)
  LZ4::Raw.decompress(compressed_data, decompressed_size).first
end