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