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