class Opbeat::Transaction
Constants
- ROOT_TRACE_NAME
Attributes
duration[RW]
endpoint[RW]
kind[RW]
notifications[R]
result[RW]
root_trace[R]
start_time[R]
timestamp[R]
traces[R]
Public Class Methods
new(client, endpoint, kind = 'code.custom', result = nil)
click to toggle source
# File lib/opbeat/transaction.rb, line 8 def initialize client, endpoint, kind = 'code.custom', result = nil @client = client @endpoint = endpoint @kind = kind @result = result @timestamp = Util.nearest_minute.to_i @root_trace = Trace.new(self, ROOT_TRACE_NAME, ROOT_TRACE_NAME) @traces = [@root_trace] @notifications = [] @start_time = Util.nanos @root_trace.start @start_time end
Public Instance Methods
current_offset()
click to toggle source
# File lib/opbeat/transaction.rb, line 82 def current_offset if curr = current_trace return curr.start_time end start_time end
current_trace()
click to toggle source
# File lib/opbeat/transaction.rb, line 78 def current_trace traces.reverse.find(&:running?) end
done(result = nil)
click to toggle source
# File lib/opbeat/transaction.rb, line 31 def done result = nil @result = result @root_trace.done Util.nanos @duration = @root_trace.duration self end
done?()
click to toggle source
# File lib/opbeat/transaction.rb, line 40 def done? @root_trace.done? end
inspect()
click to toggle source
# File lib/opbeat/transaction.rb, line 90 def inspect info = %w{endpoint kind result duration timestamp start_time} <<-TEXT <Transaction #{info.map { |m| "#{m}:#{send(m).inspect}" }.join(' ')}> #{traces.map(&:inspect).join("\n ")}" TEXT end
release()
click to toggle source
# File lib/opbeat/transaction.rb, line 27 def release @client.current_transaction = nil end
running_traces()
click to toggle source
# File lib/opbeat/transaction.rb, line 74 def running_traces traces.select(&:running?) end
submit(result = nil)
click to toggle source
# File lib/opbeat/transaction.rb, line 44 def submit result = nil done result release @client.submit_transaction self self end
trace(signature, kind = nil, extra = nil) { |trace| ... }
click to toggle source
# File lib/opbeat/transaction.rb, line 54 def trace signature, kind = nil, extra = nil, &block trace = Trace.new(self, signature, kind, running_traces, extra) rel_time = current_offset traces << trace trace.start rel_time return trace unless block_given? begin result = yield trace ensure trace.done end result end