# encoding: utf-8 TingYun::Support::LibraryDetection.defer do named :net_http depends_on do defined?(Net) && defined?(Net::HTTP) end executes do ::TingYun::Agent.logger.info 'Installing Net instrumentation' require 'ting_yun/agent/cross_app/cross_app_tracing' require 'ting_yun/http/net_http_request' require 'ting_yun/instrumentation/support/external_error' end executes do class Net::HTTP def request_with_tingyun_trace(request, *args, &block) tingyun_request = TingYun::Http::NetHttpRequest.new(self, request) TingYun::Agent::CrossAppTracing.tl_trace_http_request(tingyun_request) do TingYun::Agent.disable_all_tracing do request_without_tingyun_trace(request, *args, &block ) end end end alias :request_without_tingyun_trace :request alias :request :request_with_tingyun_trace class << self def get_response_with_tingyun(uri_or_host, path = nil, port = nil, &block) begin get_response_without_tingyun(uri_or_host, path = nil, port = nil, &block) rescue => e klass = "External/#{uri_or_host.to_s.gsub('/','%2F')}/net%2Fhttp" ::TingYun::Instrumentation::Support::ExternalError.handle_error(e,klass) raise e end end alias get_response_without_tingyun get_response alias get_response get_response_with_tingyun def start_with_tingyun(address, *arg, &block) begin start_without_tingyun(address, *arg, &block) rescue => e klass = "External/#{address.to_s.gsub('/','%2F')}/net%2Fhttp" ::TingYun::Instrumentation::Support::ExternalError.handle_error(e,klass) raise e end end alias :start_without_tingyun :start alias :start :start_with_tingyun end end end end