Class: Cassandra::Compression::Compressors::Lz4
- Inherits:
-
Cassandra::Compression::Compressor
- Object
- Cassandra::Compression::Compressor
- Cassandra::Compression::Compressors::Lz4
- 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
-
#algorithm ⇒ String
readonly
'lz4'
.
Instance Method Summary collapse
- #compress(str) ⇒ Object
-
#compress?(str) ⇒ true, false
Will return false for frames smaller than the
min_size
given to the constructor. - #decompress(str) ⇒ Object
-
#initialize(min_size = 64) ⇒ Lz4
constructor
A new instance of Lz4.
Constructor Details
#initialize(min_size = 64) ⇒ Lz4
Returns a new instance of Lz4.
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
#algorithm ⇒ String (readonly)
Returns 'lz4'
.
35 36 37 |
# File 'lib/cassandra/compression/compressors/lz4.rb', line 35 def algorithm @algorithm end |
Instance Method Details
#compress(str) ⇒ Object
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.
56 57 58 |
# File 'lib/cassandra/compression/compressors/lz4.rb', line 56 def compress?(str) str.bytesize > @min_size end |
#decompress(str) ⇒ Object
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 |