Class: Metriks::Meter

Inherits:
Object
  • Object
show all
Defined in:
lib/metriks/meter.rb

Instance Method Summary collapse

Constructor Details

#initialize(averager_klass = Metriks::EWMA) ⇒ Meter

Returns a new instance of Meter.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/metriks/meter.rb', line 7

def initialize(averager_klass = Metriks::EWMA)
  @count = Atomic.new(0)
  @start_time = Time.now

  @m1_rate  = averager_klass.new_m1
  @m5_rate  = averager_klass.new_m5
  @m15_rate = averager_klass.new_m15

  @thread = Thread.new do
    loop do
      sleep averager_klass::INTERVAL
      tick
    end
  end
end

Instance Method Details

#clearObject



23
24
25
26
27
28
29
# File 'lib/metriks/meter.rb', line 23

def clear
  @count.value = 0
  @start_time = Time.now
  @m1_rate.clear
  @m5_rate.clear
  @m15_rate.clear
end

#countObject



44
45
46
# File 'lib/metriks/meter.rb', line 44

def count
  @count.value
end

#fifteen_minute_rateObject



56
57
58
# File 'lib/metriks/meter.rb', line 56

def fifteen_minute_rate
  @m15_rate.rate
end

#five_minute_rateObject



52
53
54
# File 'lib/metriks/meter.rb', line 52

def five_minute_rate
  @m5_rate.rate
end

#mark(val = 1) ⇒ Object



37
38
39
40
41
42
# File 'lib/metriks/meter.rb', line 37

def mark(val = 1)
  @count.update { |v| v + val }
  @m1_rate.update(val)
  @m5_rate.update(val)
  @m15_rate.update(val)
end

#mean_rateObject



60
61
62
63
64
65
66
67
# File 'lib/metriks/meter.rb', line 60

def mean_rate
  if count == 0
    return 0.0
  else
    elapsed = Time.now - @start_time
    count / elapsed
  end
end

#one_minute_rateObject



48
49
50
# File 'lib/metriks/meter.rb', line 48

def one_minute_rate
  @m1_rate.rate
end

#stopObject



69
70
71
# File 'lib/metriks/meter.rb', line 69

def stop
  @thread.kill
end

#tickObject



31
32
33
34
35
# File 'lib/metriks/meter.rb', line 31

def tick
  @m1_rate.tick
  @m5_rate.tick
  @m15_rate.tick
end