Class: TingYun::Metrics::MetricData
- Inherits:
-
Object
- Object
- TingYun::Metrics::MetricData
- Defined in:
- lib/ting_yun/metrics/metric_data.rb
Instance Attribute Summary collapse
-
#metric_id ⇒ Object
nil or a cached integer ID for the metric from the collector.
-
#metric_spec ⇒ Object
readonly
nil, or a TingYun::Metrics::MetricSpec object if we have no cached ID.
-
#quantile ⇒ Object
readonly
Returns the value of attribute quantile.
-
#stats ⇒ Object
the actual statistics object.
Instance Method Summary collapse
- #eql?(o) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(metric_spec, stats, metric_id, quantile = []) ⇒ MetricData
constructor
A new instance of MetricData.
- #inspect ⇒ Object
- #metrics(stat_key) ⇒ Object
- #to_collector_array(encoder = nil) ⇒ Object
- #to_hash ⇒ Object
-
#to_json(*a) ⇒ Object
Serialize with all attributes, but if the metric id is not nil, then don’t send the metric spec.
- #to_s ⇒ Object
Constructor Details
#initialize(metric_spec, stats, metric_id, quantile = []) ⇒ MetricData
Returns a new instance of MetricData.
18 19 20 21 22 23 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 18 def initialize(metric_spec, stats, metric_id, quantile = []) @metric_spec = metric_spec @stats = stats @metric_id = metric_id @quantile = quantile end |
Instance Attribute Details
#metric_id ⇒ Object
nil or a cached integer ID for the metric from the collector.
13 14 15 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 13 def metric_id @metric_id end |
#metric_spec ⇒ Object (readonly)
nil, or a TingYun::Metrics::MetricSpec object if we have no cached ID
11 12 13 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 11 def metric_spec @metric_spec end |
#quantile ⇒ Object (readonly)
Returns the value of attribute quantile.
16 17 18 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 16 def quantile @quantile end |
#stats ⇒ Object
the actual statistics object
15 16 17 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 15 def stats @stats end |
Instance Method Details
#eql?(o) ⇒ Boolean
25 26 27 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 25 def eql?(o) (metric_spec.eql? o.metric_spec) && (stats.eql? o.stats) end |
#hash ⇒ Object
29 30 31 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 29 def hash metric_spec.hash ^ stats.hash end |
#inspect ⇒ Object
46 47 48 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 46 def inspect "#<MetricData metric_spec:#{metric_spec.inspect}, stats:#{stats.inspect}, metric_id:#{metric_id.inspect}>" end |
#metrics(stat_key) ⇒ Object
64 65 66 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 64 def metrics(stat_key) stats.metrics(stat_key) end |
#to_collector_array(encoder = nil) ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 51 def to_collector_array(encoder=nil) stat_key = metric_id || to_hash if quantile.empty? [stat_key, metrics(stat_key)] else [stat_key, metrics(stat_key), quantile] end end |
#to_hash ⇒ Object
60 61 62 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 60 def to_hash metric_spec.to_hash end |
#to_json(*a) ⇒ Object
Serialize with all attributes, but if the metric id is not nil, then don’t send the metric spec
34 35 36 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 34 def to_json(*a) %Q[{"metric_spec":#{metric_id ? 'null' : metric_spec.to_json},"stats":{"total_exclusive_time":#{stats.total_exclusive_time},"min_call_time":#{stats.min_call_time},"call_count":#{stats.call_count},"sum_of_squares":#{stats.sum_of_squares},"total_call_time":#{stats.total_call_time},"max_call_time":#{stats.max_call_time}},"metric_id":#{metric_id ? metric_id : 'null'}}] end |
#to_s ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/ting_yun/metrics/metric_data.rb', line 38 def to_s if metric_spec "#{metric_spec.name}(#{metric_spec.scope}): #{stats}" else "#{metric_id}: #{stats}" end end |