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

Version Path
ree_lib-1.1.1 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.1.0 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.124 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.123 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.122 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.121 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.120 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.119 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.118 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.117 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.116 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.115 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.114 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.113 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.112 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.111 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.110 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.109 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.108 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb
ree_lib-1.0.107 lib/ree_lib/packages/ree_logger/package/ree_logger/rate_limiter.rb