module Datadog::Tracing::Contrib::Dalli::Instrumentation::InstanceMethods

def datadog_configuration

def datadog_configuration
  Datadog.configuration.tracing[:dalli, "#{hostname}:#{port}"]
end

def request(op, *args)

def request(op, *args)
  Tracing.trace(Ext::SPAN_COMMAND) do |span|
    span.resource = op.to_s.upcase
    span.service = datadog_configuration[:service_name]
    span.span_type = Ext::SPAN_TYPE_COMMAND
    if datadog_configuration[:peer_service]
      span.set_tag(
        Tracing::Metadata::Ext::TAG_PEER_SERVICE,
        datadog_configuration[:peer_service]
      )
    end
    # Tag original global service name if not used
    if span.service != Datadog.configuration.service
      span.set_tag(Tracing::Contrib::Ext::Metadata::TAG_BASE_SERVICE, Datadog.configuration.service)
    end
    span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CLIENT)
    span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
    span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_COMMAND)
    span.set_tag(Tracing::Metadata::Ext::TAG_PEER_HOSTNAME, hostname)
    # Set analytics sample rate
    if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
      Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
    end
    span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, hostname)
    span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, port)
    span.set_tag(Contrib::Ext::DB::TAG_SYSTEM, Ext::TAG_SYSTEM)
    if datadog_configuration[:command_enabled]
      cmd = Quantize.format_command(op, args)
      span.set_tag(Ext::TAG_COMMAND, cmd)
    end
    Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
    super
  end
end