Module: Datadog::Tracing::Transport::Traces::Encoder

Defined in:
lib/datadog/tracing/transport/traces.rb

Overview

Encodes traces using Core::Encoding::Encoder instances.

Class Method Summary collapse

Class Method Details

.encode_trace(encoder, trace, logger:, native_events_supported:) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/datadog/tracing/transport/traces.rb', line 106

def encode_trace(encoder, trace, logger:, native_events_supported:)
  # Format the trace for transport
  TraceFormatter.format!(trace)

  # Make the trace serializable
  serializable_trace = SerializableTrace.new(trace, native_events_supported: native_events_supported)

  # Encode the trace
  encoder.encode(serializable_trace).tap do |encoded|
    # Print the actual serialized trace, since the encoder can change make non-trivial changes
    logger.debug { "Flushing trace: #{encoder.decode(encoded)}" }
  end
end