Sha256: 4e2c02c3b174154ac0113972dcad9328428339d59efec00c51d921a5d6fb513d

Contents?: true

Size: 916 Bytes

Versions: 8

Compression:

Stored size: 916 Bytes

Contents

require_relative 'core_ext'
require_relative 'processor'
require_relative 'worker'

module Upperkut
  class Manager
    attr_accessor :worker
    attr_reader :stopped, :logger, :concurrency, :processors

    def initialize(opts = {})
      self.worker = opts.fetch(:worker).constantize
      @concurrency = opts.fetch(:concurrency, 1)
      @logger = opts.fetch(:logger, Upperkut::Logging.logger)

      @stopped = false
      @processors = []
    end

    def run
      @concurrency.times do
        processor = Processor.new(self)
        @processors << processor
        processor.run
      end
    end

    def stop
      @stopped = true
    end

    def kill
      @processors.each(&:kill)
    end

    def notify_killed_processor(processor)
      @processors.delete(processor)
      return if @stopped

      processor = Processor.new(self)
      @processors << processor
      processor.run
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
upperkut-0.8.1 lib/upperkut/manager.rb
upperkut-0.8.0 lib/upperkut/manager.rb
upperkut-0.7.5 lib/upperkut/manager.rb
upperkut-0.7.4 lib/upperkut/manager.rb
upperkut-0.7.2 lib/upperkut/manager.rb
upperkut-0.7.1 lib/upperkut/manager.rb
upperkut-0.7.0 lib/upperkut/manager.rb
upperkut-0.6.0 lib/upperkut/manager.rb