class ElasticAPM::GRPC::ClientInterceptor
@api private
def request_response(request:, call:, method:, metadata:)
def request_response(request:, call:, method:, metadata:) return yield unless (transaction = ElasticAPM.current_transaction) if (trace_context = transaction.trace_context) trace_context.apply_headers { |k, v| metadata[k.downcase] = v } end ElasticAPM.with_span( method, TYPE, subtype: SUBTYPE, context: span_context(call) ) do yield end end
def span_context(call)
def span_context(call) peer = call.instance_variable_get(:@wrapped)&.peer return unless peer split_peer = URI.split(peer) destination = ElasticAPM::Span::Context::Destination.new( address: split_peer[0], port: split_peer[6], service: { type: TYPE, name: SUBTYPE, resource: peer } ) ElasticAPM::Span::Context.new(destination: destination) end