class Sqreen::Ecosystem::Tracing::Sampler::TargetPerMinutePrimitive

Public Class Methods

new(max_calls) click to toggle source
# File lib/sqreen/ecosystem/tracing/sampler.rb, line 109
def initialize(max_calls)
  @max_calls = max_calls
  @minute_last_call = cur_minute
  @calls_accumulated = 0
  @mutex = Mutex.new
end

Public Instance Methods

triggers?() click to toggle source
# File lib/sqreen/ecosystem/tracing/sampler.rb, line 116
def triggers?
  this_minute = cur_minute
  calls_cur_minute = @mutex.synchronize do
    if @minute_last_call == this_minute
      @calls_accumulated += 1
    else
      @minute_last_call = this_minute
      @calls_accumulated = 1
    end
  end

  calls_cur_minute <= @max_calls
end

Private Instance Methods

cur_minute() click to toggle source
# File lib/sqreen/ecosystem/tracing/sampler.rb, line 132
def cur_minute
  (Sqreen.time / 60).floor
end