Classes and Modules
Public Class methods
Public Instance methods
after(interval_in_secs, cb = nil, &blk)
[show source]
# File lib/httpx/timers.rb 9 def after(interval_in_secs, cb = nil, &blk) 10 callback = cb || blk 11 12 raise Error, "timer must have a callback" unless callback 13 14 # I'm assuming here that most requests will have the same 15 # request timeout, as in most cases they share common set of 16 # options. A user setting different request timeouts for 100s of 17 # requests will already have a hard time dealing with that. 18 unless (interval = @intervals.bsearch { |t| t.interval == interval_in_secs }) 19 interval = Interval.new(interval_in_secs) 20 @intervals << interval 21 @intervals.sort! 22 end 23 24 interval << callback 25 26 @next_interval_at = nil 27 28 Timer.new(interval, callback) 29 end
fire(error = nil)
[show source]
# File lib/httpx/timers.rb 41 def fire(error = nil) 42 raise error if error && error.timeout != @intervals.first 43 return if @intervals.empty? || !@next_interval_at 44 45 elapsed_time = Utils.elapsed_time(@next_interval_at) 46 47 drop_elapsed!(elapsed_time) 48 49 @intervals = @intervals.drop_while { |interval| interval.elapse(elapsed_time) <= 0 } 50 51 @next_interval_at = nil if @intervals.empty? 52 end
wait_interval()
[show source]
# File lib/httpx/timers.rb 31 def wait_interval 32 drop_elapsed! 33 34 return if @intervals.empty? 35 36 @next_interval_at = Utils.now 37 38 @intervals.first.interval 39 end