class Sicily::BatchProcessor
Public Class Methods
new(files)
click to toggle source
# File lib/sicily/batch_processor.rb, line 9 def initialize(files) @files = files @pool = Concurrent::FixedThreadPool.new(Sicily.config.num_thread_pool) @latch = Concurrent::CountDownLatch.new(@files.size) end
Public Instance Methods
notify_beginning()
click to toggle source
# File lib/sicily/batch_processor.rb, line 23 def notify_beginning Util::NotificationUtil.notify_beginning(@files) end
notify_done()
click to toggle source
# File lib/sicily/batch_processor.rb, line 55 def notify_done Util::NotificationUtil.notify_done(@files) end
notify_done_when_finished()
click to toggle source
# File lib/sicily/batch_processor.rb, line 40 def notify_done_when_finished @pool.post do @latch.wait notify_done end end
process_added_file(file, &user_rule_block)
click to toggle source
# File lib/sicily/batch_processor.rb, line 47 def process_added_file(file, &user_rule_block) file_processor = FileProcessor.new(file) file_processor.instance_eval(&user_rule_block) file_processor.info 'Done' rescue Exception => e Sicily.logger.error e.inspect end
process_each_file_in_thread(file, &user_rule_block)
click to toggle source
# File lib/sicily/batch_processor.rb, line 33 def process_each_file_in_thread(file, &user_rule_block) @pool.post do process_added_file(file, &user_rule_block) @latch.count_down end end
process_files_in_thread(&user_rule_block)
click to toggle source
# File lib/sicily/batch_processor.rb, line 27 def process_files_in_thread(&user_rule_block) @files.each do |file| process_each_file_in_thread file, &user_rule_block end end
run(&user_rule_block)
click to toggle source
# File lib/sicily/batch_processor.rb, line 15 def run(&user_rule_block) return if @files.empty? notify_beginning process_files_in_thread(&user_rule_block) notify_done_when_finished end