Sha256: 716cb6c01263b9893dfdf540c4e5d65d95ba9be3586a6fc51570a12c2b036b1b
Contents?: true
Size: 789 Bytes
Versions: 3
Compression:
Stored size: 789 Bytes
Contents
module DeadlySerious module Processes class ResilientSplitter def initialize @reallocate = false Signal.trap('USR1') do @reallocate = true end end def run(readers: [], writers: []) reader = readers.first outputs = writers.dup current = nil reader.each do |line| begin if @reallocate @reallocate = false outputs = writers.dup end current = outputs.first current << line << "\n" outputs.rotate! rescue Errno::EPIPE => e puts e.inspect outputs.delete(current) raise e if outputs.empty? redo end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems