class Datadog::Core::Telemetry::Emitter

Class that emits telemetry events

def self.sequence

Sequence object
Initializes a Sequence object to track seq_id if not already initialized; else returns stored
def self.sequence
  after_fork! { @sequence = Datadog::Core::Utils::Sequence.new(1) }
  @sequence ||= Datadog::Core::Utils::Sequence.new(1)
end

def initialize(http_transport: Datadog::Core::Telemetry::Http::Transport.new)

Parameters:
  • http_transport (Datadog::Core::Telemetry::Http::Transport) -- Transport object that can be used to send
  • sequence (Datadog::Core::Utils::Sequence) -- Sequence object that stores and increments a counter
def initialize(http_transport: Datadog::Core::Telemetry::Http::Transport.new)
  @http_transport = http_transport
end

def request(request_type, data: nil)

Parameters:
  • data (Object) -- arbitrary object to be passed to the respective `request_type` handler
  • request_type (String) -- the type of telemetry request to collect data for
def request(request_type, data: nil)
  begin
    request = Datadog::Core::Telemetry::Event.new.telemetry_request(
      request_type: request_type,
      seq_id: self.class.sequence.next,
      data: data,
    ).to_h
    @http_transport.request(request_type: request_type.to_s, payload: request.to_json)
  rescue StandardError => e
    Datadog.logger.debug("Unable to send telemetry request for event `#{request_type}`: #{e}")
    Telemetry::Http::InternalErrorResponse.new(e)
  end
end