lib/fusuma/plugin/inputs/input.rb in fusuma-3.3.1 vs lib/fusuma/plugin/inputs/input.rb in fusuma-3.4.0
- old
+ new
@@ -23,22 +23,25 @@
ios = IO.select(inputs.map(&:io))
io = ios&.first&.first
input = inputs.find { |i| i.io == io }
- begin
- # NOTE: io.readline is blocking method
- # each input plugin must write line to pipe (include `\n`)
- line = io.readline(chomp: true)
- rescue EOFError => e
- MultiLogger.error "#{input.class.name}: #{e}"
- MultiLogger.error "Shutdown fusuma process..."
- Process.kill("TERM", Process.pid)
- rescue => e
- MultiLogger.error "#{input.class.name}: #{e}"
- exit 1
- end
- input.create_event(record: line)
+ input.create_event(record: input.read_from_io)
+ end
+
+ # @return [String, Record]
+ # IO#readline is blocking method
+ # so input plugin must write line to pipe (include `\n`)
+ # or, override read_from_io and implement your own read method
+ def read_from_io
+ io.readline(chomp: true)
+ rescue EOFError => e
+ MultiLogger.error "#{self.class.name}: #{e}"
+ MultiLogger.error "Shutdown fusuma process..."
+ Process.kill("TERM", Process.pid)
+ rescue => e
+ MultiLogger.error "#{self.class.name}: #{e}"
+ exit 1
end
# @return [Integer]
def pid
raise NotImplementedError, "override #{self.class.name}##{__method__}"