Module: FnordMetric::GaugeModifiers
- Included in:
- Context
- Defined in:
- lib/fnordmetric/gauge_modifiers.rb
Instance Method Summary collapse
- #incr(gauge_name, value = 1) ⇒ Object
- #incr_field(gauge_name, field_name, value = 1) ⇒ Object
- #incr_tick(gauge, value) ⇒ Object
- #incr_uniq(gauge, value) ⇒ Object
Instance Method Details
#incr(gauge_name, value = 1) ⇒ Object
3 4 5 6 7 8 9 10 11 |
# File 'lib/fnordmetric/gauge_modifiers.rb', line 3 def incr(gauge_name, value=1) gauge = fetch_gauge(gauge_name) assure_two_dimensional!(gauge) if gauge.unique? incr_uniq(gauge, value) else incr_tick(gauge, value) end end |
#incr_field(gauge_name, field_name, value = 1) ⇒ Object
37 38 39 40 41 |
# File 'lib/fnordmetric/gauge_modifiers.rb', line 37 def incr_field(gauge_name, field_name, value=1) gauge = fetch_gauge(gauge_name) assure_three_dimensional!(gauge) # here be dragons end |
#incr_tick(gauge, value) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fnordmetric/gauge_modifiers.rb', line 13 def incr_tick(gauge, value) if gauge.progressive? @redis.incrby(gauge.key(:head), value).callback do |head| @redis.hsetnx(gauge.key, gauge.tick_at(time), head).callback do |_new| @redis.hincrby(gauge.key, gauge.tick_at(time), value) unless _new end end else @redis.hincrby(gauge.key, gauge.tick_at(time), value) end end |
#incr_uniq(gauge, value) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/fnordmetric/gauge_modifiers.rb', line 25 def incr_uniq(gauge, value) return false unless session_key @redis.sadd(gauge.tick_key(time, :sessions), session_key).callback do |_new| @redis.expire(gauge.tick_key(time, :sessions), gauge.tick) if _new @redis.incr(gauge.tick_key(time, :"sessions-count")).callback do |sc| incr_tick(gauge, value) end end end end |