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