class Soda::Manager

Attributes

fetcher[R]
mutex[R]
workers[R]

Public Class Methods

new() click to toggle source
# File lib/soda/manager.rb, line 5
def initialize
  @workers  = Set.new
  @fetcher  = Fetcher.new
  @mutex    = Mutex.new
  @shutdown = false

  count = Soda.options[:concurrency]
  count.times do
    @workers << Processor.new(self)
  end
end

Public Instance Methods

on_died(worker) click to toggle source

A processor will die on failed job execution. Replace it with a new one.

# File lib/soda/manager.rb, line 29
def on_died(worker)
  mutex.synchronize do
    workers.delete(worker)

    unless shutdown?
      workers << (processor = Processor.new(self))

      processor.start
    end
  end
end
start() click to toggle source
# File lib/soda/manager.rb, line 17
def start
  workers.each(&:start)
end
stop() click to toggle source
# File lib/soda/manager.rb, line 21
def stop
  shutdown!

  workers.each(&:stop)
  workers.each(&:finish)
end

Private Instance Methods

shutdown!() click to toggle source
# File lib/soda/manager.rb, line 45
def shutdown!
  @shutdown = true
end
shutdown?() click to toggle source
# File lib/soda/manager.rb, line 49
def shutdown?
  @shutdown
end