class StackifyRubyAPM::Instrumenter

@api private

Constants

KEY

Attributes

agent[R]
config[R]
pending_transactions[R]

Public Class Methods

new(agent) click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 29
def initialize(agent)
  debug '[Instrumenter] initialize()' if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
  @agent = agent
  @config = agent.config

  @transaction_info = TransactionInfo.new
end

Public Instance Methods

current_transaction() click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 49
def current_transaction
  @transaction_info.current
end
current_transaction=(transaction) click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 53
def current_transaction=(transaction)
  @transaction_info.current = transaction
end
inspect() click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 103
def inspect
  '<StackifyRubyAPM::Instrumenter ' \
    "current_transaction=#{current_transaction.inspect}" \
    '>'
end
span(*args) { || ... } click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 85
def span(*args, &block)
  unless current_transaction
    return yield if block_given?

    return
  end

  current_transaction.span(*args, &block)
end
stop() click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 39
def stop
  current_transaction.release if current_transaction
  @subscriber.unregister! if @subscriber
end
submit_transaction(transaction) click to toggle source

Once the transaction is submitted it will be stored temporarily in queue

# File lib/stackify_apm/instrumenter.rb, line 97
def submit_transaction(transaction)
  debug '[Instrumenter] submit_transaction(transaction) transaction: ' + transaction.inspect.to_s if ENV['STACKIFY_TRANSPORT_LOG_LEVEL'] == '0'
  agent.enqueue_transaction transaction
  return unless config.debug_transactions
end
subscriber=(subscriber) click to toggle source
# File lib/stackify_apm/instrumenter.rb, line 44
def subscriber=(subscriber)
  @subscriber = subscriber
  @subscriber.register!
end
transaction(*args) { || ... } click to toggle source

Creates a new transaction or return the currently running

# File lib/stackify_apm/instrumenter.rb, line 59
def transaction(*args)
  unless config.instrument
    yield if block_given?
    return
  end

  if (transaction = current_transaction)
    yield transaction if block_given?
    return transaction
  end

  transaction = Transaction.new self, *args

  self.current_transaction = transaction
  return transaction unless block_given?

  begin
    yield transaction
  ensure
    self.current_transaction = nil
    transaction.done
  end

  transaction
end