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