class InfluxReporter::Transaction
Constants
- ROOT_TRACE_NAME
Attributes
config[R]
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
@param client [InfluxReporter::Client] @param endpoint [String] @param kind [String] @param result [Integer]
# File lib/influx_reporter/transaction.rb, line 13 def initialize(client, endpoint, kind = 'code.custom', result = nil) @client = client @config = client.config if client.respond_to?(:config) @endpoint = endpoint @kind = kind @result = result @timestamp = Util.nanos @running_traces = [] @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
_trace_started(trace)
click to toggle source
# File lib/influx_reporter/transaction.rb, line 81 def _trace_started(trace) @running_traces.push trace end
_trace_stopped(trace)
click to toggle source
# File lib/influx_reporter/transaction.rb, line 85 def _trace_stopped(trace) if @running_traces.last == trace @running_traces.pop else @running_traces.delete trace end end
current_offset()
click to toggle source
# File lib/influx_reporter/transaction.rb, line 111 def current_offset if curr = current_trace return curr.start_time end start_time end
current_trace()
click to toggle source
# File lib/influx_reporter/transaction.rb, line 107 def current_trace @running_traces.last end
done(result = nil)
click to toggle source
# File lib/influx_reporter/transaction.rb, line 38 def done(result = nil) @result = result @root_trace.done Util.nanos @duration = @root_trace.duration self end
done?()
click to toggle source
# File lib/influx_reporter/transaction.rb, line 47 def done? @root_trace.done? end
extra_values() { |extra| ... }
click to toggle source
# File lib/influx_reporter/transaction.rb, line 98 def extra_values @root_trace.extra[:values] ||= {} yield @root_trace.extra[:values] end
inspect()
click to toggle source
# File lib/influx_reporter/transaction.rb, line 119 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/influx_reporter/transaction.rb, line 34 def release @client.current_transaction = nil end
running_traces()
click to toggle source
# File lib/influx_reporter/transaction.rb, line 103 def running_traces @running_traces.clone end
submit(result = nil)
click to toggle source
# File lib/influx_reporter/transaction.rb, line 51 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/influx_reporter/transaction.rb, line 61 def trace(signature, kind = nil, extra = nil) 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