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.



61
62
63
# File 'lib/appmap/trace.rb', line 61

def initialize
  @tracers = []
end

Instance Method Details

#delete(tracer) ⇒ Object



96
97
98
99
100
101
# File 'lib/appmap/trace.rb', line 96

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

  @tracers.delete(tracer)
  tracer.disable
end

#empty?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/appmap/trace.rb', line 65

def empty?
  @tracers.empty?
end

#enabled?Boolean

Returns:

  • (Boolean)


76
77
78
# File 'lib/appmap/trace.rb', line 76

def enabled?
  @tracers.any?(&:enabled?)
end

#last_package_for_current_threadObject



80
81
82
# File 'lib/appmap/trace.rb', line 80

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



84
85
86
87
88
# File 'lib/appmap/trace.rb', line 84

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



90
91
92
93
94
# File 'lib/appmap/trace.rb', line 90

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

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



69
70
71
72
73
74
# File 'lib/appmap/trace.rb', line 69

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