class OpenCensus::Stats::Recorder

Stats recorder.

Recorder record measurement against measure for registered views.

Attributes

measure_views_data[R]

@private @return [Hash<String,Array<<ViewData>>] Hash of view name and View data objects array.

measures[R]

@private @return [Hash<String,Measure>] Hash of measure name and Measure object.

views[R]

@private @return [Hash<String,View>] Hash of view name and View object.

Public Class Methods

new() click to toggle source

@private Create instance of the recorder.

# File lib/opencensus/stats/recorder.rb, line 28
def initialize
  @views = {}
  @measures = {}
  @measure_views_data = {}
  @time = Time.now.utc
end

Public Instance Methods

clear_stats() click to toggle source

Clear recorded stats.

# File lib/opencensus/stats/recorder.rb, line 93
def clear_stats
  @measure_views_data.each_value do |views_data|
    views_data.each(&:clear)
  end
end
record(*measurements, attachments: nil) click to toggle source

Record measurements

@param [Array<Measurement>, Measurement] measurements @param [Hash<String,String>] attachments

# File lib/opencensus/stats/recorder.rb, line 61
def record *measurements, attachments: nil
  return if measurements.any? { |m| m.value < 0 }

  measurements.each do |measurement|
    views_data = @measure_views_data[measurement.measure.name]
    next unless views_data

    views_data.each do |view_data|
      view_data.record measurement, attachments: attachments
    end
  end
end
register_view(view) click to toggle source

Register view

@param [View] view @return [View]

# File lib/opencensus/stats/recorder.rb, line 39
def register_view view
  return if @views.key? view.name

  @views[view.name] = view
  @measures[view.measure.name] = view.measure

  unless @measure_views_data.key? view.measure.name
    @measure_views_data[view.measure.name] = []
  end

  @measure_views_data[view.measure.name] << ViewData.new(
    view,
    start_time: @time,
    end_time: @time
  )
  view
end
view_data(view_name) click to toggle source

Get recorded data for given view name

@param [String] view_name View name @return [ViewData]

# File lib/opencensus/stats/recorder.rb, line 78
def view_data view_name
  view = @views[view_name]
  return unless view

  views_data = @measure_views_data[view.measure.name]
  views_data.find { |view_data| view_data.view.name == view.name }
end
views_data() click to toggle source

Get all views data list @return [Array<ViewData>]

# File lib/opencensus/stats/recorder.rb, line 88
def views_data
  @measure_views_data.values.flatten
end