Class: AppMap::Trace::MethodCall

Inherits:
MethodEvent show all
Defined in:
lib/appmap/trace/tracer.rb

Constant Summary

Constants inherited from MethodEvent

AppMap::Trace::MethodEvent::COUNTER_LOCK, AppMap::Trace::MethodEvent::LIMIT

Instance Attribute Summary collapse

Attributes inherited from MethodEventStruct

#defined_class, #event, #id, #lineno, #method_id, #path, #static, #thread_id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from MethodEvent

display_string, next_id, value_in_binding

Instance Attribute Details

#parametersObject

Returns the value of attribute parameters.



117
118
119
# File 'lib/appmap/trace/tracer.rb', line 117

def parameters
  @parameters
end

#receiverObject

Returns the value of attribute receiver.



117
118
119
# File 'lib/appmap/trace/tracer.rb', line 117

def receiver
  @receiver
end

Class Method Details

.build_from_tracepoint(mc = MethodCall.new, tp, path) ⇒ Object



121
122
123
124
125
126
127
# File 'lib/appmap/trace/tracer.rb', line 121

def build_from_tracepoint(mc = MethodCall.new, tp, path)
  mc.tap do |_|
    mc.parameters = collect_parameters(tp)
    mc.receiver = collect_self(tp)
    MethodEvent.build_from_tracepoint(mc, tp, path)
  end
end

.collect_parameters(tp) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/appmap/trace/tracer.rb', line 137

def collect_parameters(tp)
  -> { tp.self.method(tp.method_id).parameters rescue [] }.call.collect do |pinfo|
    kind, key = pinfo
    value = value_in_binding(tp, key)
    {
      name: key,
      class: value.class.name,
      object_id: value.__id__,
      value: display_string(value),
      kind: kind # :req, :rest, :key, :keyrest, :block
    }
  end
end

.collect_self(tp) ⇒ Object



129
130
131
132
133
134
135
# File 'lib/appmap/trace/tracer.rb', line 129

def collect_self(tp)
  {
    class: tp.self.class.name,
    object_id: tp.self.__id__,
    value: display_string(tp.self)
  }
end

Instance Method Details

#to_hObject



152
153
154
155
156
157
# File 'lib/appmap/trace/tracer.rb', line 152

def to_h
  super.tap do |h|
    h[:parameters] = parameters
    h[:receiver] = receiver
  end
end