class ElasticAPM::GRPC::ClientInterceptor
@api private
Constants
- SUBTYPE
- TYPE
Public Instance Methods
request_response(request:, call:, method:, metadata:) { || ... }
click to toggle source
rubocop:disable Lint/UnusedMethodArgument, Style/ExplicitBlockArgument
# File lib/elastic_apm/grpc.rb, line 29 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
Private Instance Methods
span_context(call)
click to toggle source
rubocop:enable Lint/UnusedMethodArgument, Style/ExplicitBlockArgument
# File lib/elastic_apm/grpc.rb, line 47 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