class Skylight::Core::Probes::Excon::Middleware
Middleware
for Excon
that instruments requests
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/skylight/core/probes/excon/middleware.rb, line 11 def initialize(*) @requests = {} super end
Public Instance Methods
error_call(datum)
click to toggle source
Calls superclass method
# File lib/skylight/core/probes/excon/middleware.rb, line 31 def error_call(datum) super ensure end_instrumentation(datum) end
request_call(datum)
click to toggle source
TODO: Review the following:
-
Consider whether a LIFO queue would be sufficient
-
Check that errors can't be called without a request
Calls superclass method
# File lib/skylight/core/probes/excon/middleware.rb, line 20 def request_call(datum) begin_instrumentation(datum) super end
response_call(datum)
click to toggle source
Calls superclass method
# File lib/skylight/core/probes/excon/middleware.rb, line 25 def response_call(datum) super ensure end_instrumentation(datum) end
Private Instance Methods
begin_instrumentation(datum)
click to toggle source
# File lib/skylight/core/probes/excon/middleware.rb, line 39 def begin_instrumentation(datum) method = datum[:method].to_s scheme = datum[:scheme] host = datum[:host] # TODO: Maybe don't show other default ports like 443 port = datum[:port] != 80 ? datum[:port] : nil path = datum[:path] query = datum[:query] opts = Formatters::HTTP.build_opts(method, scheme, host, port, path, query) @requests[datum.object_id] = Skylight::Core::Fanout.instrument(opts) rescue Exception => e error "failed to begin instrumentation for Excon; msg=%s", e.message end
end_instrumentation(datum)
click to toggle source
# File lib/skylight/core/probes/excon/middleware.rb, line 55 def end_instrumentation(datum) if (request = @requests.delete(datum.object_id)) meta = {} if datum[:error].is_a?(Exception) meta[:exception_object] = datum[:error] end Skylight::Core::Fanout.done(request, meta) end rescue Exception => e error "failed to end instrumentation for Excon; msg=%s", e.message end