Sha256: a828ed4dc6efb6105e814b4d8e8cd6b5d01f13936dddd560f36b0c12a9064846
Contents?: true
Size: 1.53 KB
Versions: 17
Compression:
Stored size: 1.53 KB
Contents
# requirements should be kept minimal as Patcher is a shared requirement. module Datadog module Contrib module GRPC SERVICE = 'grpc'.freeze # Patcher enables patching of 'grpc' module. module Patcher include Base register_as :grpc, auto_patch: true option :tracer, default: Datadog.tracer option :service_name, default: SERVICE @patched = false module_function def patch return false unless compatible? return @patched if @patched require 'ddtrace/ext/grpc' require 'ddtrace/propagation/grpc_propagator' require 'ddtrace/contrib/grpc/datadog_interceptor' require 'ddtrace/contrib/grpc/intercept_with_datadog' add_pin prepend_interceptor @patched = true rescue StandardError => e Datadog::Tracer.log.error("Unable to apply gRPC integration: #{e}") ensure @patched end def compatible? defined?(::GRPC::VERSION) && Gem::Version.new(::GRPC::VERSION) >= Gem::Version.new('0.10.0') end def patched? @patched end def add_pin Pin.new( get_option(:service_name), app: 'grpc', app_type: 'grpc', tracer: get_option(:tracer) ).onto(::GRPC) end def prepend_interceptor ::GRPC::InterceptionContext .prepend(Datadog::Contrib::GRPC::InterceptWithDatadog) end end end end end
Version data entries
17 entries across 17 versions & 1 rubygems