class ElasticAPM::Metrics::Metric

@api private

Attributes

initial_value[R]
key[R]
tags[R]
value[R]

Public Class Methods

new( key, initial_value: nil, tags: nil, reset_on_collect: false ) click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 24
def initialize(
  key,
  initial_value: nil,
  tags: nil,
  reset_on_collect: false
)
  @key = key
  @initial_value = initial_value
  @value = initial_value
  @tags = tags
  @reset_on_collect = reset_on_collect
  @mutex = Mutex.new
end

Public Instance Methods

collect() click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 56
def collect
  @mutex.synchronize do
    collected = @value

    @value = initial_value if reset_on_collect?

    return nil if reset_on_collect? && collected == 0

    collected
  end
end
reset!() click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 44
def reset!
  self.value = initial_value
end
reset_on_collect?() click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 52
def reset_on_collect?
  @reset_on_collect
end
tags?() click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 48
def tags?
  !!tags&.any?
end
value=(value) click to toggle source
# File lib/elastic_apm/metrics/metric.rb, line 40
def value=(value)
  @mutex.synchronize { @value = value }
end