Sha256: dea290ccf4210df8fe3c0beccbf6d92ccbd65b98eebe66f13d5b8754f813d84c
Contents?: true
Size: 1.53 KB
Versions: 2
Compression:
Stored size: 1.53 KB
Contents
module Twirl module Instrumentation class Subscriber # Public: Use this as the subscribed block. def self.call(name, start, ending, transaction_id, payload) new(name, start, ending, transaction_id, payload).update end # Private: Initializes a new event processing instance. def initialize(name, start, ending, transaction_id, payload) @name = name @start = start @ending = ending @payload = payload @duration = ending - start @transaction_id = transaction_id end # Public: Actually update all the metriks timers for the event. # # Returns nothing. def update op = @payload[:op] bytes = @payload[:bytes] queue_name = @payload[:queue_name] metric_type = @payload[:metric_type] || :timer return unless op send "update_#{metric_type}", "twirl.op_#{op}" if @payload[:retry] update_counter "twirl.retries_op_#{op}" end if bytes update_counter "twirl.bytes_op_#{op}" if queue_name update_counter "twirl.bytes_queue_#{queue_name}_op_#{op}" end end if queue_name update_timer "twirl.queue_#{queue_name}_op_#{op}" end end # Internal: Override in subclass. def update_timer(metric) raise NotImplementedError end # Internal: Override in subclass. def update_counter(metric, value = 1) raise NotImplementedError end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
twirl-0.2.0 | lib/twirl/instrumentation/subscriber.rb |
twirl-0.1.0 | lib/twirl/instrumentation/subscriber.rb |