Class: FFWD::Core::Processor
- Inherits:
-
Object
- Object
- FFWD::Core::Processor
- Defined in:
- lib/ffwd/core/processor.rb
Overview
Component responsible for receiving and internally route metrics and events.
The term ‘processor’ is used because depending on the set of provided processors it might be determined that the received metric should be provided to one of them instead.
If no processor matches, it is just passed straight through.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(input, emitter, processors, reporters) ⇒ Processor
constructor
A new instance of Processor.
- #report!(diff) ⇒ Object
Constructor Details
#initialize(input, emitter, processors, reporters) ⇒ Processor
Returns a new instance of Processor.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ffwd/core/processor.rb', line 37 def initialize input, emitter, processors, reporters @emitter = emitter @processors = processors @reporters = reporters @subs = [] @processors.each do |name, p| p.depend_on input end input.starting do @subs << input.metric_subscribe do |m| process_metric m end @subs << input.event_subscribe do |e| process_event e end end input.stopping do @subs.each(&:unsubscribe).clear end end |
Class Method Details
.build(input, emitter, processors) ⇒ Object
31 32 33 34 35 |
# File 'lib/ffwd/core/processor.rb', line 31 def self.build input, emitter, processors processors = Hash[processors.map{|p| [p.name, p.setup(emitter)]}] reporters = processors.select{|k, p| FFWD.is_reporter?(p)}.map{|k, p| p} new(input, emitter, processors, reporters) end |
Instance Method Details
#report!(diff) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/ffwd/core/processor.rb', line 62 def report!(diff) @reporters.each do |reporter| reporter.report!(diff) do |d| yield d end end end |