class Cassandra::Compression::Compressors::Snappy

A compressor that uses the Snappy compression library.

@note This compressor requires the

[snappy](http://rubygems.org/gems/snappy) gem (v0.0.10 or later for
JRuby support).

@note No need to instantiate this class manually, use `compression:

:snappy` option when calling {Cassandra.cluster} and one will be
created automatically for you.

Attributes

algorithm[R]

@return [String] `'snappy'`

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/snappy.rb
36 def initialize(min_size = 64)
37   unless defined?(::Snappy)
38     begin
39       require 'snappy'
40     rescue LoadError => e
41       raise LoadError, %(Snappy support requires the "snappy" gem: #{e.message}),
42             e.backtrace
43     end
44   end
45 
46   @algorithm = 'snappy'.freeze
47   @min_size = min_size
48 end

Public Instance Methods

compress(str) click to toggle source

@see Cassandra::Compression::Compressor#compress

   # File lib/cassandra/compression/compressors/snappy.rb
58 def compress(str)
59   ::Snappy.deflate(str)
60 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/snappy.rb
53 def compress?(str)
54   str.bytesize > @min_size
55 end
decompress(str) click to toggle source

@see Cassandra::Compression::Compressor#decompress

   # File lib/cassandra/compression/compressors/snappy.rb
63 def decompress(str)
64   ::Snappy.inflate(str)
65 end