Class: Mayu::Metrics::Reporter::DataStore::MetricStore

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/mayu/metrics/reporter.rb

Instance Method Summary collapse

Constructor Details

#initialize(store, metric_name:, metric_type:, metric_settings:) ⇒ MetricStore

Returns a new instance of MetricStore.



106
107
108
109
110
# File 'lib/mayu/metrics/reporter.rb', line 106

def initialize(store, metric_name:, metric_type:, metric_settings:)
  @store = store
  @metric_name = metric_name
  @semaphore = T.let(Async::Semaphore.new, Async::Semaphore)
end

Instance Method Details

#get(labels:) ⇒ Object



142
143
144
# File 'lib/mayu/metrics/reporter.rb', line 142

def get(labels:)
  @store.fetch(labels)
end

#increment(by: 1, labels: {}) ⇒ Object



137
138
139
# File 'lib/mayu/metrics/reporter.rb', line 137

def increment(by: 1, labels: {})
  @store.store(labels, @store.fetch(labels, 0.0) + by.to_f)
end

#set(val:, labels: {}) ⇒ Object



127
128
129
# File 'lib/mayu/metrics/reporter.rb', line 127

def set(val:, labels: {})
  @store.store(labels, val.to_f)
end

#synchronize(&block) ⇒ Object



117
118
119
# File 'lib/mayu/metrics/reporter.rb', line 117

def synchronize(&block)
  @semaphore.async { yield }.wait
end