Class: SolidObserver::ChartBuffer
- Inherits:
-
Object
- Object
- SolidObserver::ChartBuffer
- Defined in:
- lib/solid_observer/chart_buffer.rb
Defined Under Namespace
Classes: SampleWindow
Constant Summary collapse
- CACHE_KEY =
"solid_observer/chart_buffer/ready_samples"- INSTANCE_MUTEX =
Mutex.new
- SAMPLE_CAP =
720- STORAGE_MUTEX =
Mutex.new
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.append(value, at: Time.now) ⇒ Object
41 42 43 |
# File 'lib/solid_observer/chart_buffer.rb', line 41 def append(value, at: Time.now) instance.append(value, at: at) end |
.clear ⇒ Object
49 50 51 |
# File 'lib/solid_observer/chart_buffer.rb', line 49 def clear instance.clear end |
.recent(window_seconds) ⇒ Object
45 46 47 |
# File 'lib/solid_observer/chart_buffer.rb', line 45 def recent(window_seconds) instance.recent(window_seconds) end |
Instance Method Details
#append(value, at: Time.now) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/solid_observer/chart_buffer.rb', line 62 def append(value, at: Time.now) sample = {t: at.to_i, v: value.to_i} STORAGE_MUTEX.synchronize { persist_sample(sample) } sample end |
#clear ⇒ Object
78 79 80 81 82 83 84 85 86 |
# File 'lib/solid_observer/chart_buffer.rb', line 78 def clear STORAGE_MUTEX.synchronize do empty_samples = [] replace_fallback_samples(empty_samples) cache_store&.delete(CACHE_KEY) rescue nil end end |
#recent(window_seconds) ⇒ Object
70 71 72 73 74 75 76 |
# File 'lib/solid_observer/chart_buffer.rb', line 70 def recent(window_seconds) cutoff = Time.now.to_i - window_seconds.to_i STORAGE_MUTEX.synchronize do load_samples.select { |sample| sample[:t] >= cutoff }.map(&:dup) end end |