Class: TingYun::Agent::Collector::MiddleWareCollector
- Inherits:
-
Object
- Object
- TingYun::Agent::Collector::MiddleWareCollector
- Includes:
- Enumerable
- Defined in:
- lib/ting_yun/agent/collector/middle_ware_collector.rb
Instance Method Summary collapse
- #clear ⇒ Object
- #each(&blk) ⇒ Object
-
#initialize(event_listener) ⇒ MiddleWareCollector
constructor
A new instance of MiddleWareCollector.
-
#load_samplers ⇒ Object
adds samplers to the sampler collection so that they run every minute.
- #register_sampler(sampler_class) ⇒ Object
- #sampler_class_registered?(sampler_class) ⇒ Boolean
- #samplers_poll ⇒ Object
Constructor Details
#initialize(event_listener) ⇒ MiddleWareCollector
Returns a new instance of MiddleWareCollector.
15 16 17 18 19 |
# 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 |
Instance Method Details
#clear ⇒ Object
37 38 39 |
# File 'lib/ting_yun/agent/collector/middle_ware_collector.rb', line 37 def clear() @samplers.clear end |
#each(&blk) ⇒ Object
33 34 35 |
# File 'lib/ting_yun/agent/collector/middle_ware_collector.rb', line 33 def each(&blk) @samplers.each(&blk) end |
#load_samplers ⇒ Object
adds samplers to the sampler collection so that they run every minute. This is dynamically recognized by any class that
69 70 71 72 73 |
# 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) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# 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) ⇒ Boolean
41 42 43 |
# 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 ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# 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 |