Module: OneApm::Agent::Instrumentation::TyphoeusTracing
- Defined in:
- lib/one_apm/inst/http_clients/typhoeus.rb
Constant Summary collapse
- OA_EARLIEST_VERSION =
OneApm::VersionNumber.new("0.5.3")
Class Method Summary collapse
- .is_supported_version? ⇒ Boolean
- .request_is_hydra_enabled?(request) ⇒ Boolean
- .trace(request) ⇒ Object
Class Method Details
.is_supported_version? ⇒ Boolean
53 54 55 |
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 53 def self.is_supported_version? OneApm::VersionNumber.new(Typhoeus::VERSION) >= OneApm::Agent::Instrumentation::TyphoeusTracing::OA_EARLIEST_VERSION end |
.request_is_hydra_enabled?(request) ⇒ Boolean
57 58 59 |
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 57 def self.request_is_hydra_enabled?(request) request.respond_to?(:hydra) && request.hydra end |
.trace(request) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/one_apm/inst/http_clients/typhoeus.rb', line 61 def self.trace(request) state = OneApm::TransactionState.tl_get if state.is_execution_traced? && !request_is_hydra_enabled?(request) wrapped_request = ::OneApm::Support::HTTPClients::TyphoeusHTTPRequest.new(request) t0 = Time.now segment = ::OneApm::Agent::CrossAppTracing.start_trace(state, t0, wrapped_request) callback = Proc.new do wrapped_response = ::OneApm::Support::HTTPClients::TyphoeusHTTPResponse.new(request.response) ::OneApm::Agent::CrossAppTracing.finish_trace(state, t0, segment, wrapped_request, wrapped_response) end request.on_complete.unshift(callback) end rescue => e OneApm::Manager.logger.error("Exception during trace setup for Typhoeus request", e) end |