Class: Mayu::Metrics::Reporter::DataStore::MetricStore
- Inherits:
-
Object
- Object
- Mayu::Metrics::Reporter::DataStore::MetricStore
- Extended by:
- T::Sig
- Defined in:
- lib/mayu/metrics/reporter.rb
Instance Method Summary collapse
- #get(labels:) ⇒ Object
- #increment(by: 1, labels: {}) ⇒ Object
-
#initialize(store, metric_name:, metric_type:, metric_settings:) ⇒ MetricStore
constructor
A new instance of MetricStore.
- #set(val:, labels: {}) ⇒ Object
- #synchronize(&block) ⇒ Object
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 |