Method: S3sync::ProgressStream#read

Defined in:
lib/HTTPStreaming.rb

#read(i) ⇒ Object

need to catch reads and writes so we can count what’s being transferred



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/HTTPStreaming.rb', line 65

def read(i)
	res = @innerStream.read(i)
	@transferred += res.respond_to?(:length) ? res.length : 0
	now = Time.new
	if(now - @last > 1) # don't do this oftener than once per second
		@printed = true
          begin
             $stdout.printf("\rProgress: %db  %db/s  %s       ", @transferred, (@transferred/(now - @start)).floor, 
                @total > 0? (100 * @transferred/@total).floor.to_s + "%" : ""  
             )
          rescue FloatDomainError
             #wtf?
          end
		$stdout.flush
		@last = now
	end
	res
end