Sha256: 8456271a48f17c4d74e16976af17aae4af2fdb7195c7b3ab1deacee95918c469

Contents?: true

Size: 1.93 KB

Versions: 11

Compression:

Stored size: 1.93 KB

Contents

# typed: true

require_relative 'collector'
require_relative 'v1/app_event'
require_relative 'v1/telemetry_request'

module Datadog
  module Core
    module Telemetry
      # Class defining methods to construct a Telemetry event
      class Event
        include Kernel

        include Telemetry::Collector

        API_VERSION = 'v1'.freeze

        attr_reader \
          :api_version

        def initialize
          @api_version = API_VERSION
        end

        # Forms a TelemetryRequest object based on the event request_type
        # @param request_type [String] the type of telemetry request to collect data for
        # @param seq_id [Integer] the ID of the request; incremented each time a telemetry request is sent to the API
        def telemetry_request(request_type:, seq_id:)
          Telemetry::V1::TelemetryRequest.new(
            api_version: @api_version,
            application: application,
            host: host,
            payload: payload(request_type),
            request_type: request_type,
            runtime_id: runtime_id,
            seq_id: seq_id,
            tracer_time: tracer_time,
          )
        end

        private

        def payload(request_type)
          case request_type
          when :'app-started'
            app_started
          when :'app-closing', :'app-heartbeat'
            {}
          when :'app-integrations-change'
            app_integrations_change
          else
            raise ArgumentError, "Request type invalid, received request_type: #{@request_type}"
          end
        end

        def app_started
          Telemetry::V1::AppEvent.new(
            dependencies: dependencies,
            integrations: integrations,
            configuration: configurations,
            additional_payload: additional_payload
          )
        end

        def app_integrations_change
          Telemetry::V1::AppEvent.new(integrations: integrations)
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ddtrace-1.9.0 lib/datadog/core/telemetry/event.rb
ddtrace-1.8.0 lib/datadog/core/telemetry/event.rb
ddtrace-1.7.0 lib/datadog/core/telemetry/event.rb
ddtrace-1.6.1 lib/datadog/core/telemetry/event.rb
ddtrace-1.6.0 lib/datadog/core/telemetry/event.rb
ddtrace-1.5.2 lib/datadog/core/telemetry/event.rb
ddtrace-1.5.1 lib/datadog/core/telemetry/event.rb
ddtrace-1.5.0 lib/datadog/core/telemetry/event.rb
ddtrace-1.4.2 lib/datadog/core/telemetry/event.rb
ddtrace-1.4.1 lib/datadog/core/telemetry/event.rb
ddtrace-1.4.0 lib/datadog/core/telemetry/event.rb