module Fluent::Plugin::Buffer::Chunk::Decompressable

Public Instance Methods

append(data, **kwargs) click to toggle source
Calls superclass method
# File lib/fluent/plugin/buffer/chunk.rb, line 187
def append(data, **kwargs)
  if kwargs[:compress] == :gzip
    io = StringIO.new
    Zlib::GzipWriter.wrap(io) do |gz|
      data.each do |d|
        gz.write d
      end
    end
    concat(io.string, data.size)
  else
    super
  end
end
open(**kwargs) { |output_io| ... } click to toggle source
Calls superclass method
# File lib/fluent/plugin/buffer/chunk.rb, line 201
def open(**kwargs, &block)
  if kwargs[:compressed] == :gzip
    super
  else
    super(**kwargs) do |chunk_io|
      output_io = if chunk_io.is_a?(StringIO)
                    StringIO.new
                  else
                    Tempfile.new('decompressed-data')
                  end
      output_io.binmode if output_io.is_a?(Tempfile)
      decompress(input_io: chunk_io, output_io: output_io)
      output_io.seek(0, IO::SEEK_SET)
      yield output_io
    end
  end
end
read(**kwargs) click to toggle source
Calls superclass method
# File lib/fluent/plugin/buffer/chunk.rb, line 219
def read(**kwargs)
  if kwargs[:compressed] == :gzip
    super
  else
    decompress(super)
  end
end
write_to(io, **kwargs) click to toggle source
# File lib/fluent/plugin/buffer/chunk.rb, line 227
def write_to(io, **kwargs)
  open(compressed: :gzip) do |chunk_io|
    if kwargs[:compressed] == :gzip
      IO.copy_stream(chunk_io, io)
    else
      decompress(input_io: chunk_io, output_io: io)
    end
  end
end