Sha256: 6f5b040b60f34058f9e19907e5eb31bb1d5e2aefe337c05c612bdac5ad478d3e

Contents?: true

Size: 1.37 KB

Versions: 27

Compression:

Stored size: 1.37 KB

Contents

module Datadog
  module Contrib
    module GRPC
      # :nodoc:
      module DatadogInterceptor
        # :nodoc:
        class Base < ::GRPC::Interceptor
          attr_accessor :datadog_pin

          def initialize(options = {})
            datadog_pin_configuration { |c| yield(c) if block_given? }
          end

          def request_response(**keywords)
            trace(keywords) { yield }
          end

          def client_streamer(**keywords)
            trace(keywords) { yield }
          end

          def server_streamer(**keywords)
            trace(keywords) { yield }
          end

          def bidi_streamer(**keywords)
            trace(keywords) { yield }
          end

          private

          def datadog_pin_configuration
            pin = default_datadog_pin

            if block_given?
              pin = Pin.new(
                pin.service_name,
                app: pin.app,
                app_type: pin.app_type,
                tracer: pin.tracer
              )

              yield(pin)
            end

            pin.onto(self)

            pin
          end

          def default_datadog_pin
            Pin.get_from(::GRPC)
          end

          def tracer
            datadog_pin.tracer
          end
        end

        require_relative 'datadog_interceptor/client'
        require_relative 'datadog_interceptor/server'
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
ddtrace-0.19.1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.19.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.18.3 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.18.2 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.18.1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.18.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.17.3 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.17.2 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.17.1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.17.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.16.1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.16.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.15.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.14.2 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.14.1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/grpc/datadog_interceptor.rb
ddtrace-0.14.0 lib/ddtrace/contrib/grpc/datadog_interceptor.rb