class Mnemosyne::Instrumenter
Constants
- IDENT
- MUTEX
Attributes
instance[R]
Public Class Methods
current_trace()
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 94 def current_trace return unless (instrumenter = instance) instrumenter.current_trace end
new(config:, client:)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 10 def initialize(config:, client:) @client = client @config = config ::Mnemosyne::Probes.activate! logger.debug(Mnemosyne) { 'Instrumenter started' } end
start!(config = nil)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 61 def start!(config = nil) return @instance if @instance MUTEX.synchronize do return @instance if @instance client = Client.new(config) @instance = new(config: config, client: client) end rescue StandardError => e ::Mnemosyne::Logging.logger.warn(Mnemosyne) do "Unable to start instrumenter: #{e}" end raise end
trace(*args, **kwargs)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 88 def trace(*args, **kwargs) return unless (instrumenter = instance) instrumenter.trace(*args, **kwargs) end
with(instrumenter) { |instrumenter| ... }
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 79 def with(instrumenter) old = instance @instance = instrumenter yield(instrumenter) ensure @instance = old end
Public Instance Methods
current_trace()
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 19 def current_trace Thread.current[IDENT] end
current_trace=(trace)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 23 def current_trace=(trace) Thread.current[IDENT] = trace end
release(trace)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 52 def release(trace) return unless current_trace.equal?(trace) self.current_trace = nil end
submit(trace)
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 46 def submit(trace) logger.debug(Mnemosyne) { "Submit trace #{trace.uuid}" } @client.call trace end
trace(name, **kwargs) { |trace| ... }
click to toggle source
# File lib/mnemosyne/instrumenter.rb, line 27 def trace(name, **kwargs) if (trace = current_trace) return yield trace if block_given? return trace end trace = self.current_trace = Trace.new(self, name, **kwargs) return trace unless block_given? begin yield trace ensure self.current_trace = nil trace.submit end end