class Mmtrix::Agent::SamplerCollection
Public Class Methods
new(event_listener)
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 10 def initialize(event_listener) @samplers = [] @event_listener = event_listener @event_listener.subscribe(:before_harvest) { poll_samplers } end
Public Instance Methods
add_sampler(sampler_class)
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 50 def add_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 sampler.setup_events(@event_listener) if sampler.respond_to?(:setup_events) @samplers << sampler ::Mmtrix::Agent.logger.debug("Registered #{sampler_class.name} for harvest time sampling.") else ::Mmtrix::Agent.logger.warn("Ignoring addition of #{sampler_class.name} because it is already registered.") end else ::Mmtrix::Agent.logger.debug("#{sampler_class.name} not supported on this platform.") end rescue Mmtrix::Agent::Sampler::Unsupported => e ::Mmtrix::Agent.logger.info("#{sampler_class.name} not available: #{e}") rescue => e ::Mmtrix::Agent.logger.error("Error registering sampler:", e) end
clear()
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 20 def clear() @samplers.clear end
each(&blk)
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 16 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 subclasses Mmtrix::Agent::Sampler
# File lib/mmtrix/agent/sampler_collection.rb, line 31 def load_samplers Sampler.sampler_classes.each do |subclass| add_sampler(subclass) end end
poll_samplers()
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 38 def poll_samplers @samplers.delete_if do |sampler| begin sampler.poll false # it's okay. don't delete it. rescue => e ::Mmtrix::Agent.logger.warn("Removing #{sampler} from list", e) true # remove the sampler end end end
sampler_class_registered?(sampler_class)
click to toggle source
# File lib/mmtrix/agent/sampler_collection.rb, line 24 def sampler_class_registered?(sampler_class) self.any? { |s| s.class == sampler_class } end