class Determinator::Tracking::Tracker

Attributes

determinations[R]
type[R]

Public Class Methods

new(type) click to toggle source
# File lib/determinator/tracking/tracker.rb, line 9
def initialize(type)
  @determinations = Hash.new(0)
  @type = type
  @monotonic_start = now
  @start = Time.now
end

Public Instance Methods

finish!(endpoint:, error:, **attributes) click to toggle source
# File lib/determinator/tracking/tracker.rb, line 27
def finish!(endpoint:, error:, **attributes)
  request_time = now - @monotonic_start
  Determinator::Tracking::Request.new(
    start: @start,
    type: type,
    time: request_time,
    endpoint: endpoint,
    error: error,
    attributes: attributes,
    determinations: determinations,
    context: Determinator::Tracking.context
  )
end
track(id, guid, feature, determination) click to toggle source
# File lib/determinator/tracking/tracker.rb, line 16
def track(id, guid, feature, determination)
  determinations[
    Determinator::Tracking::Determination.new(
      id: id,
      guid: guid,
      feature_id: feature.identifier,
      determination: determination
    )
  ] += 1
end

Private Instance Methods

now() click to toggle source
# File lib/determinator/tracking/tracker.rb, line 43
def now
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end