1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
# frozen_string_literal: true
require 'zlib'
require 'stringio'
module Dalli
##
# Default compressor used by Dalli, that uses
# Zlib DEFLATE to compress data.
##
class Compressor
def self.compress(data)
Zlib::Deflate.deflate(data)
end
def self.decompress(data)
Zlib::Inflate.inflate(data)
end
end
##
# Alternate compressor for Dalli, that uses
# Gzip. Gzip adds a checksum to each compressed
# entry.
##
class GzipCompressor
def self.compress(data)
io = StringIO.new(+'', 'w')
gz = Zlib::GzipWriter.new(io)
gz.write(data)
gz.close
io.string
end
def self.decompress(data)
io = StringIO.new(data, 'rb')
Zlib::GzipReader.new(io).read
end
end
end
|