class Hoss::Instrumenter

@api private

Constants

EVENT_KEY

Attributes

enqueue[R]
stacktrace_builder[R]

Public Class Methods

new(config, metrics:, stacktrace_builder:, &enqueue) click to toggle source
# File lib/hoss/instrumenter.rb, line 46
def initialize(config, metrics:, stacktrace_builder:, &enqueue)
  @config = config
  @stacktrace_builder = stacktrace_builder
  @enqueue = enqueue
  @metrics = metrics

  @current = Current.new
end

Public Instance Methods

current_event() click to toggle source
# File lib/hoss/instrumenter.rb, line 90
def current_event
  current_events.last
end
current_events() click to toggle source

events

# File lib/hoss/instrumenter.rb, line 86
def current_events
  @current.events
end
end_event() click to toggle source
# File lib/hoss/instrumenter.rb, line 100
def end_event
  return unless (event = current_events.pop)
  event.done
  enqueue.call event
  event
end
handle_forking!() click to toggle source
# File lib/hoss/instrumenter.rb, line 72
def handle_forking!
  stop
  start
end
start() click to toggle source
# File lib/hoss/instrumenter.rb, line 57
def start
  debug 'Starting instrumenter'
  # We call register! on @subscriber in case the
  # instrumenter was stopped and started again
  @subscriber&.register!
end
start_event() click to toggle source
# File lib/hoss/instrumenter.rb, line 94
def start_event
  event = Event.new
  current_events.push event
  event.start
end
stop() click to toggle source
# File lib/hoss/instrumenter.rb, line 64
def stop
  debug 'Stopping instrumenter'

  current_events.pop until current_events.empty?

  @subscriber&.unregister!
end
subscriber=(subscriber) click to toggle source
# File lib/hoss/instrumenter.rb, line 77
def subscriber=(subscriber)
  debug 'Registering subscriber'
  @subscriber = subscriber
  @subscriber.register!
end