Class: Datadog::Profiling::HttpTransport
- Inherits:
-
Object
- Object
- Datadog::Profiling::HttpTransport
- Defined in:
- lib/datadog/profiling/http_transport.rb,
ext/datadog_profiling_native_extension/http_transport.c
Overview
Used to report profiling data to Datadog. Methods prefixed with native are implemented in ‘http_transport.c`
Instance Attribute Summary collapse
-
#exporter_configuration ⇒ Object
readonly
Returns the value of attribute exporter_configuration.
Class Method Summary collapse
Instance Method Summary collapse
- #export(flush) ⇒ Object
-
#initialize(agent_settings:, site:, api_key:, upload_timeout_seconds:) ⇒ HttpTransport
constructor
A new instance of HttpTransport.
Constructor Details
#initialize(agent_settings:, site:, api_key:, upload_timeout_seconds:) ⇒ HttpTransport
Returns a new instance of HttpTransport.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/datadog/profiling/http_transport.rb', line 13 def initialize(agent_settings:, site:, api_key:, upload_timeout_seconds:) @upload_timeout_milliseconds = (upload_timeout_seconds * 1_000).to_i @exporter_configuration = if agentless?(site, api_key) [:agentless, site, api_key].freeze else [:agent, agent_settings.url].freeze end status, result = self.class._native_validate_exporter(exporter_configuration) raise(ArgumentError, "Failed to initialize transport: #{result}") if status == :error end |
Instance Attribute Details
#exporter_configuration ⇒ Object (readonly)
Returns the value of attribute exporter_configuration.
11 12 13 |
# File 'lib/datadog/profiling/http_transport.rb', line 11 def exporter_configuration @exporter_configuration end |
Class Method Details
._native_do_export ⇒ Object
29 30 31 32 33 34 |
# File 'ext/datadog_profiling_native_extension/http_transport.c', line 29
static VALUE _native_do_export(
VALUE self,
VALUE exporter_configuration,
VALUE upload_timeout_milliseconds,
VALUE flush
);
|
._native_validate_exporter ⇒ Object
26 |
# File 'ext/datadog_profiling_native_extension/http_transport.c', line 26
static VALUE _native_validate_exporter(VALUE self, VALUE exporter_configuration);
|
Instance Method Details
#export(flush) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/datadog/profiling/http_transport.rb', line 28 def export(flush) status, result = self.class._native_do_export( exporter_configuration, @upload_timeout_milliseconds, flush ) if status == :ok if (200..299).cover?(result) Datadog.logger.debug("Successfully reported profiling data") true else Datadog.logger.warn( "Failed to report profiling data (#{config_without_api_key}): " \ "server returned unexpected HTTP #{result} status code" ) Datadog::Core::Telemetry::Logger.error( "Failed to report profiling data: unexpected HTTP #{result} status code" ) false end else Datadog.logger.warn("Failed to report profiling data (#{config_without_api_key}): #{result}") Datadog::Core::Telemetry::Logger.error("Failed to report profiling data") false end end |