Class: SolidObserver::Services::CableStats
- Inherits:
-
Object
- Object
- SolidObserver::Services::CableStats
show all
- Defined in:
- lib/solid_observer/services/cable_stats.rb
Overview
Defined Under Namespace
Classes: BacklogSnapshot, StabilityData, TrendData
Constant Summary
collapse
- RANGES =
{
"15m" => 15.minutes,
"30m" => 30.minutes,
"1h" => 1.hour,
"7h" => 7.hours,
"1d" => 1.day,
"7d" => 7.days,
"14d" => 14.days
}.freeze
- DEFAULT_RANGE =
"15m"
- ACTIVITY_TREND_EMPTY =
{
available: false,
broadcasts: [],
rejections: []
}.freeze
- STABILITY_EMPTY =
{
available: false,
state: :stable,
rejection_count: 0,
error_count: 0,
rejection_rate: 0.0,
backlog_ratio: nil,
backlog_available: false,
latest_recorded_at: nil
}.freeze
- STABILITY_DEGRADED =
{
available: true,
state: :degraded,
rejection_count: 0,
error_count: 0,
rejection_rate: 0.0,
backlog_ratio: nil,
backlog_available: false,
latest_recorded_at: nil
}.freeze
- BUCKET_RULES =
[
[2.hours.to_i, 1.minute.to_i],
[1.day.to_i, 15.minutes.to_i],
[7.days.to_i, 2.hours.to_i]
].freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.call(window:) ⇒ Object
260
261
262
|
# File 'lib/solid_observer/services/cable_stats.rb', line 260
def self.call(window:)
new.call(window: window)
end
|
.parse_range(value, fallback: DEFAULT_RANGE) ⇒ Object
244
245
246
247
|
# File 'lib/solid_observer/services/cable_stats.rb', line 244
def parse_range(value, fallback: DEFAULT_RANGE)
range_key = value.to_s
RANGES.key?(range_key) ? range_key : fallback
end
|
.range_duration(value, fallback: DEFAULT_RANGE) ⇒ Object
249
250
251
|
# File 'lib/solid_observer/services/cable_stats.rb', line 249
def range_duration(value, fallback: DEFAULT_RANGE)
RANGES.fetch(parse_range(value, fallback: fallback))
end
|
.ratio(numerator, denominator) ⇒ Object
253
254
255
256
257
|
# File 'lib/solid_observer/services/cable_stats.rb', line 253
def ratio(numerator, denominator)
return 0.0 if denominator.to_i.zero?
numerator.to_f / denominator.to_f
end
|
Instance Method Details
#call(window:) ⇒ Object
264
265
266
267
268
269
270
|
# File 'lib/solid_observer/services/cable_stats.rb', line 264
def call(window:)
current_time = Time.current
dashboard_response(window: window, current_time: current_time)
rescue => error
Rails.logger&.error("[SolidObserver] CableStats call failed: #{error.class} #{error.message}") if defined?(Rails)
error_response
end
|