class TimeBandits::TimeConsumers::BaseConsumer
Attributes
metrics_prefix[R]
runtime_format[R]
runtime_keys[R]
struct[R]
timer_name[R]
Public Class Methods
fields(*symbols)
click to toggle source
first symbol is used as time measurement
# File lib/time_bandits/time_consumers/base_consumer.rb, line 18 def fields(*symbols) @struct = Struct.new(*(symbols.map{|s| "#{@metrics_prefix}_#{s}".to_sym})) symbols.each do |name| class_eval(<<-"EVA", __FILE__, __LINE__ + 1) def #{name}; @counters.#{@metrics_prefix}_#{name}; end def #{name}=(v); @counters.#{@metrics_prefix}_#{name} = v; end EVA end end
format(f, *keys)
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 28 def format(f, *keys) @runtime_format = f @runtime_keys = keys.map{|s| "#{@metrics_prefix}_#{s}".to_sym} end
instance()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 4 def instance Thread.current.thread_variable_get(key) || Thread.current.thread_variable_set(key, new) end
key()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 9 def key @key ||= name.to_sym end
method_missing(m, *args)
click to toggle source
Calls superclass method
# File lib/time_bandits/time_consumers/base_consumer.rb, line 35 def method_missing(m, *args) (i = instance).respond_to?(m) ? i.send(m,*args) : super end
new()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 40 def initialize @counters = self.class.struct.new reset end
prefix(sym)
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 13 def prefix(sym) @metrics_prefix = sym end
Public Instance Methods
consumed()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 53 def consumed @counters[0] end
Also aliased as: current_runtime
metrics()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 49 def metrics @counters.members.each_with_object({}){|m,h| h[m] = @counters.send(m)} end
reset()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 45 def reset @counters.length.times{|i| @counters[i] = 0} end
runtime()
click to toggle source
# File lib/time_bandits/time_consumers/base_consumer.rb, line 59 def runtime values = metrics.values_at(*self.class.runtime_keys) if values.all?{|v|v==0} "" else self.class.runtime_format % values end end