class Cassandra::Compression::Compressors::Lz4

A compressor that uses the LZ4 compression library.

@note This compressor requires the

[lz4-ruby](http://rubygems.org/gems/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.

Constants

BUFFER_FORMAT

@private

Attributes

algorithm[R]

@return [String] `'lz4'`

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/cassandra/compression/compressors/lz4.rb
39 def initialize(min_size = 64)
40   unless defined?(::LZ4::Raw)
41     begin
42       require 'lz4-ruby'
43     rescue LoadError => e
44       raise LoadError, %(LZ4 support requires the "lz4-ruby" gem: #{e.message}),
45             e.backtrace
46     end
47   end
48 
49   @algorithm = 'lz4'.freeze
50   @min_size = min_size
51 end

Public Instance Methods

compress(str) click to toggle source

@see Cassandra::Compression::Compressor#compress

   # File lib/cassandra/compression/compressors/lz4.rb
61 def compress(str)
62   [str.bytesize, ::LZ4::Raw.compress(str.to_s).first].pack(BUFFER_FORMAT)
63 end
compress?(str) click to toggle source

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

`min_size` given to the constructor.

@see Cassandra::Compression::Compressor#compress?

   # File lib/cassandra/compression/compressors/lz4.rb
56 def compress?(str)
57   str.bytesize > @min_size
58 end
decompress(str) click to toggle source

@see Cassandra::Compression::Compressor#decompress

   # File lib/cassandra/compression/compressors/lz4.rb
66 def decompress(str)
67   decompressed_size, compressed_data = str.to_s.unpack(BUFFER_FORMAT)
68   ::LZ4::Raw.decompress(compressed_data, decompressed_size).first
69 end