Sha256: 7434fb89c3176ee825610305d6a2a11b2d5c32d21806cf6ad0d5f4f9574fda49

Contents?: true

Size: 1015 Bytes

Versions: 17

Compression:

Stored size: 1015 Bytes

Contents

module Hobo
  module Lib
    module S3
      module Remote
        class File
          def initialize object, prefix
            @object = object
            @prefix = prefix
            @r_buffer, @w_buffer = IO.pipe
            @buffer_thread = nil
          end

          def buffer
            @buffer_thread = Thread.new do
              @object.read do |chunk|
                @w_buffer.write chunk
              end
            end
          end

          def read bytes
            @r_buffer.readpartial(bytes)
          end

          def write opts = {}
            s3_opts = { :single_request => true, :content_length => opts[:size] }
            @object.write s3_opts do |buffer, bytes|
              yield buffer, bytes
            end
          end

          def size
            @object.content_length
          end

          def close
            @r_buffer.close
            @w_buffer.close
            @buffer_thread.exit if @buffer_thread
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
hobo-inviqa-0.0.15 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.14 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.13 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.11 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc11 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc10 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc9 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc8 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc7 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc6 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc4 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.10.pre.rc2 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.9 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.9.pre.rc2 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.9.pre.rc1 lib/hobo/lib/s3/remote/file.rb
hobo-inviqa-0.0.9.pre.alpha lib/hobo/lib/s3/remote/file.rb