Module: Datadog::Tracing::Transport::IO::Traces::Client

Includes:
Encoder
Included in:
Client
Defined in:
lib/datadog/tracing/transport/io/traces.rb

Overview

Extensions for HTTP client

Constant Summary

Constants included from Encoder

Encoder::ENCODED_IDS

Instance Method Summary collapse

Methods included from Encoder

#encode_traces

Instance Method Details

#send_traces(traces) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/datadog/tracing/transport/io/traces.rb', line 62

def send_traces(traces)
  # Build a request
  encoded_traces = encode_traces(traces)
  encoder = Core::Encoding::JSONEncoder
  parcel = Core::Transport::Parcel.new(
    encoder.encode(encoded_traces),
    content_type: encoder.content_type,
  )
  req = Transport::Traces::Request.new(parcel)

  [send_request(req) do |out, request|
    # Get already-encoded data from parcel
    data = request.parcel.data

    # Write to IO
    result = if block_given?
      yield(out, data)
    else
      write_data(out, data)
    end

    # Generate response
    Traces::Response.new(result)
  end]
end