Sha256: 84c8f47d72ac2d693546d5ed8c698e860815e8e608e2c1b30515cf75787aee13
Contents?: true
Size: 448 Bytes
Versions: 126
Compression:
Stored size: 448 Bytes
Contents
class ReeLogger::RateLimiter contract Integer, Integer => Any def initialize(interval, max_rate) @max_rate = max_rate @interval = interval @appends = [] end def call(&block) tick = Time.now.to_i @appends.push(tick) min = tick - @interval loop do if @appends.first < min @appends.shift else break end end if @appends.size < @max_rate block.call end end end
Version data entries
126 entries across 126 versions & 1 rubygems