class Datadog::Transport::IO::Client
Encodes and writes tracer data to IO
Attributes
encoder[R]
out[R]
Public Class Methods
new(out, encoder)
click to toggle source
# File lib/ddtrace/transport/io/client.rb, line 15 def initialize(out, encoder) @out = out @encoder = encoder end
Public Instance Methods
send_request(request) { |out, request| ... }
click to toggle source
# File lib/ddtrace/transport/io/client.rb, line 20 def send_request(request) # Write data to IO # If block is given, allow it to handle writing # Otherwise use default encoding. response = if block_given? yield(out, request) else send_default_request(out, request) end # Update statistics update_stats_from_response!(response) # Return response response rescue StandardError => e message = "Internal error during IO transport request. Cause: #{e.message} Location: #{e.backtrace.first}" # Log error if stats.consecutive_errors > 0 Datadog.logger.debug(message) else Datadog.logger.error(message) end # Update statistics update_stats_from_exception!(e) InternalErrorResponse.new(e) end
Protected Instance Methods
encode_data(encoder, request)
click to toggle source
# File lib/ddtrace/transport/io/client.rb, line 53 def encode_data(encoder, request) request.parcel.encode_with(encoder) end
write_data(out, data)
click to toggle source
# File lib/ddtrace/transport/io/client.rb, line 57 def write_data(out, data) out.puts(data) end
Private Instance Methods
send_default_request(out, request)
click to toggle source
# File lib/ddtrace/transport/io/client.rb, line 63 def send_default_request(out, request) # Encode data data = encode_data(encoder, request) # Write to IO result = write_data(out, data) # Generate a response IO::Response.new(result) end