class TingYun::Agent::Collector::MiddleWareCollector
Public Class Methods
new(event_listener)
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 15 def initialize(event_listener) @samplers = [] @event_listener = event_listener @event_listener.subscribe(:middleware_harvest) { samplers_poll } end
Public Instance Methods
clear()
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 37 def clear() @samplers.clear end
each(&blk)
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 33 def each(&blk) @samplers.each(&blk) end
load_samplers()
click to toggle source
adds samplers to the sampler collection so that they run every minute. This is dynamically recognized by any class that
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 69 def load_samplers TingYun::Agent::Collector::Sampler.sampler_classes.each do |subclass| register_sampler(subclass) end end
register_sampler(sampler_class)
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 45 def register_sampler(sampler_class) supported = sampler_class.supported_on_this_platform? enabled = sampler_class.enabled? if supported && enabled if !sampler_class_registered?(sampler_class) sampler = sampler_class.new @samplers << sampler ::TingYun::Agent.logger.debug("Registered #{sampler_class.name} for harvest time sampling.") else ::TingYun::Agent.logger.warn("Ignoring addition of #{sampler_class.name} because it is already registered.") end else ::TingYun::Agent.logger.debug("#{sampler_class.name} not supported on this platform.") end rescue TingYun::Agent::Collector::Sampler::Unsupported => e ::TingYun::Agent.logger.info("#{sampler_class.name} not available: #{e}") rescue => e ::TingYun::Agent.logger.error("Error registering sampler:", e) end
sampler_class_registered?(sampler_class)
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 41 def sampler_class_registered?(sampler_class) self.any? { |s| s.class == sampler_class } end
samplers_poll()
click to toggle source
# File lib/ting_yun/agent/collector/middle_ware_collector.rb, line 21 def samplers_poll @samplers.delete_if do |sampler| begin sampler.poll false # it's okay. don't delete it. rescue => e ::TingYun::Agent.logger.warn("Removing #{sampler} from list", e) true # remove the sampler end end end