lib/fusuma.rb in fusuma-1.11.1 vs lib/fusuma.rb in fusuma-2.0.0.pre

- old
+ new

@@ -60,22 +60,27 @@ @detectors = Plugin::Detectors::Detector.plugins.map(&:new) @executors = Plugin::Executors::Executor.plugins.map(&:new) end def run - # TODO: run with multi thread - @inputs.first.run do |event| + loop do + event = input + event || next clear_expired_events filtered = filter(event) || next parsed = parse(filtered) || next buffered = buffer(parsed) || next detected = detect(buffered) || next merged = merge(detected) || next execute(merged) end end + def input + Plugin::Inputs::Input.select(@inputs) + end + def filter(event) event if @filters.any? { |f| f.filter(event) } end def parse(event) @@ -108,14 +113,18 @@ end def execute(event) return unless event - executor = @executors.find do |e| - e.executable?(event) + l = lambda do + executor = @executors.find { |e| e.executable?(event) } + executor&.execute(event) end - executor&.execute(event) + l.call || + Config::Searcher.skip { l.call } || + Config::Searcher.fallback { l.call } || + Config::Searcher.skip { Config::Searcher.fallback { l.call } } end def clear_expired_events @buffers.each(&:clear_expired) end