Class: Cassandra::Compression::Compressors::Lz4

Inherits:
Cassandra::Compression::Compressor show all
Defined in:
lib/cassandra/compression/compressors/lz4.rb

Overview

Note:

This compressor requires the lz4-ruby gem (v0.3.2 or later required).

Note:

No need to instantiate this class manually, use compression: :lz4 option when calling Cassandra.cluster and one will be created automatically for you.

A compressor that uses the LZ4 compression library.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(min_size = 64) ⇒ Lz4

Returns a new instance of Lz4.

Parameters:

  • min_size (Integer) (defaults to: 64)

    (64) Don't compress frames smaller than this size (see #compress?).



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cassandra/compression/compressors/lz4.rb', line 39

def initialize(min_size = 64)
  unless defined?(::LZ4::Raw)
    begin
      require 'lz4-ruby'
    rescue LoadError => e
      raise LoadError, %(LZ4 support requires the "lz4-ruby" gem: #{e.message}),
            e.backtrace
    end
  end

  @algorithm = 'lz4'.freeze
  @min_size = min_size
end

Instance Attribute Details

#algorithmString (readonly)

Returns 'lz4'.

Returns:

  • (String)

    'lz4'



35
36
37
# File 'lib/cassandra/compression/compressors/lz4.rb', line 35

def algorithm
  @algorithm
end

Instance Method Details

#compress(str) ⇒ Object

See Also:

  • Cassandra::Compression::Compressor#compress


61
62
63
# File 'lib/cassandra/compression/compressors/lz4.rb', line 61

def compress(str)
  [str.bytesize, ::LZ4::Raw.compress(str.to_s).first].pack(BUFFER_FORMAT)
end

#compress?(str) ⇒ true, false

Returns will return false for frames smaller than the min_size given to the constructor.

Returns:

  • (true, false)

    will return false for frames smaller than the min_size given to the constructor.

See Also:

  • Cassandra::Compression::Compressor#compress?


56
57
58
# File 'lib/cassandra/compression/compressors/lz4.rb', line 56

def compress?(str)
  str.bytesize > @min_size
end

#decompress(str) ⇒ Object

See Also:

  • Cassandra::Compression::Compressor#decompress


66
67
68
69
# File 'lib/cassandra/compression/compressors/lz4.rb', line 66

def decompress(str)
  decompressed_size, compressed_data = str.to_s.unpack(BUFFER_FORMAT)
  ::LZ4::Raw.decompress(compressed_data, decompressed_size).first
end