Class: AWS::Distro::OpenTelemetry::Exporter::XRay::UDP::UdpExporter

Inherits:
Object
  • Object
show all
Defined in:
lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb

Overview

Class that sends data over UDP.

Instance Method Summary collapse

Constructor Details

#initialize(endpoint = nil) ⇒ UdpExporter

Returns a new instance of UdpExporter.



25
26
27
28
29
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 25

def initialize(endpoint = nil)
  @endpoint = endpoint || DEFAULT_ENDPOINT
  @host, @port = parse_endpoint(@endpoint)
  @socket = UDPSocket.new
end

Instance Method Details

#send_data(data, signal_prefix) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 31

def send_data(data, signal_prefix)
  base64_encoded_string = Base64.strict_encode64(data)
  message = "#{PROTOCOL_HEADER}#{signal_prefix}#{base64_encoded_string}"

  begin
    @socket.send(message.encode('utf-8'), 0, @host, @port)
  rescue StandardError => e
    ::OpenTelemetry.logger.error("Error sending UDP data: #{e}")
    raise e
  end
end

#shutdownObject



43
44
45
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 43

def shutdown
  @socket.close
end