Sha256: a602472d04a6ce3e6d601377ea8d09e94127ceb23c115d6aa2cdcabc96dc6fd0

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

# encoding: utf-8

module LogStash
  module Outputs
    class OSS
      class TemporaryFile
        extend Forwardable

        def_delegators :@file, :path, :write, :close, :fsync

        attr_reader :file

        def initialize(file, object_key, temporary_path)
          @file = file
          @object_key = object_key
          @temporary_path = temporary_path
          @creation_time = Time.now
        end

        def ctime
          @creation_time
        end

        def temporary_path
          @temporary_path
        end

        def size
          begin
            @file.size
          rescue IOError
            ::File.size(path)
          end
        end

        def key
          @object_key.gsub(/^\//, "")
        end

        def delete!
          @file.close rescue IOError
          FileUtils.rm_r(@temporary_path, :secure => true)
        end

        def empty?
          size == 0
        end

        def self.create_existing_file(path, temporary_directory)
          # path is #{temporary_directory}/${uuid}/${prefix}/${key}
          elements = Pathname.new(path).relative_path_from(Pathname.new(temporary_directory)).to_s.split(::File::SEPARATOR)
          uuid = elements[0]
          object_key = ::File.join(elements.slice(1, elements.size - 1))
          TemporaryFile.new(::File.open(path, "r"), object_key, ::File.join(temporary_directory, uuid))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
logstash-output-oss-0.1.2-java lib/logstash/outputs/oss/temporary_file.rb
logstash-output-oss-0.1.1-java lib/logstash/outputs/oss/temporary_file.rb