Class: AppMap::Trace::Tracing

Inherits:
Object
  • Object
show all
Defined in:
lib/appmap/trace.rb

Instance Method Summary collapse

Constructor Details

#initializeTracing

Returns a new instance of Tracing.



59
60
61
# File 'lib/appmap/trace.rb', line 59

def initialize
  @tracers = []
end

Instance Method Details

#delete(tracer) ⇒ Object



94
95
96
97
98
99
# File 'lib/appmap/trace.rb', line 94

def delete(tracer)
  return unless @tracers.member?(tracer)

  @tracers.delete(tracer)
  tracer.disable
end

#empty?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/appmap/trace.rb', line 63

def empty?
  @tracers.empty?
end

#enabled?(thread_id: nil) ⇒ Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/appmap/trace.rb', line 74

def enabled?(thread_id: nil)
  @tracers.any? { |t| t.enabled?(thread_id: thread_id) }
end

#last_package_for_current_threadObject



78
79
80
# File 'lib/appmap/trace.rb', line 78

def last_package_for_current_thread
  @tracers.first&.last_package_for_current_thread
end

#record_event(event, package: nil, defined_class: nil, method: nil) ⇒ Object



82
83
84
85
86
# File 'lib/appmap/trace.rb', line 82

def record_event(event, package: nil, defined_class: nil, method: nil)
  @tracers.select { |tracer| tracer.thread_id.nil? || tracer.thread_id === event.thread_id }.each do |tracer|
    tracer.record_event(event, package: package, defined_class: defined_class, method: method)
  end
end

#record_method(method) ⇒ Object



88
89
90
91
92
# File 'lib/appmap/trace.rb', line 88

def record_method(method)
  @tracers.each do |tracer|
    tracer.record_method(method)
  end
end

#trace(enable: true, thread: nil) ⇒ Object



67
68
69
70
71
72
# File 'lib/appmap/trace.rb', line 67

def trace(enable: true, thread: nil)
  Tracer.new(thread_id: thread&.object_id).tap do |tracer|
    @tracers << tracer
    tracer.enable if enable
  end
end