class Lapine::DTrace

Attributes

probes[R]
provider[R]

Public Class Methods

fire!(probe_name, *args) click to toggle source
# File lib/lapine/dtrace.rb, line 24
def self.fire!(probe_name, *args)
  raise ArgumentError.new("Unknown probe: #{probe_name}") unless self.provider.probes[probe_name]
  probe = self.provider.probes[probe_name]
  probe.fire(*args) if probe.enabled?
end
new() click to toggle source
# File lib/lapine/dtrace.rb, line 7
def initialize
  @provider = USDT::Provider.create(:ruby, :lapine)

  @probes = {
    # args: Class name, payload
    dispatch_enter: provider.probe(:dispatch, :enter, :string, :string),
    # args: Class name, payload
    dispatch_return: provider.probe(:dispatch, :return, :string, :string),
  }
end
provider() click to toggle source
# File lib/lapine/dtrace.rb, line 18
def self.provider
  @provider ||= new.tap do |p|
    p.provider.enable
  end
end