Sha256: c9fee031490cef883ec39ad2c3d77f62245cf2804e649d5f42fab9f1419b8e80

Contents?: true

Size: 1.36 KB

Versions: 30

Compression:

Stored size: 1.36 KB

Contents

module Lipsiadmin
  module Loops
    class WorkerPool#:nodoc:
      attr_reader :logger
      attr_reader :name

      def initialize(name, logger, engine, &blk)
        @name = name
        @logger = logger
        @worker_block = blk
        @shutdown = false
        @engine = engine
        @workers = []
      end

      def start_workers(number)
        logger.debug("Creating #{number} workers for #{name} loop...")
        number.times do 
          @workers << Lipsiadmin::Loops::Worker.new(name, logger, @engine, &@worker_block)
        end
      end

      def check_workers
        logger.debug("Checking loop #{name} workers...")
        @workers.each do |worker|
          next if worker.running? || worker.shutdown?
          logger.debug("Worker #{worker.name} is not running. Restart!")
          worker.run
        end
      end

      def wait_workers
        running = 0
        @workers.each do |worker|
          next unless worker.running?
          running += 1
          logger.debug("Worker #{name} is still running (#{worker.pid})")
        end
        return running
      end

      def stop_workers(force)
        return if @shutdown
        @shutdown = false
        logger.debug("Stopping loop #{name} workers...")
        @workers.each do |worker|
          next unless worker.running?
          worker.stop(force)
        end
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
lipsiadmin-5.1.6 lib/loops/worker_pool.rb
lipsiadmin-5.1.5 lib/loops/worker_pool.rb
lipsiadmin-5.1.4 lib/loops/worker_pool.rb
lipsiadmin-5.1.3 lib/loops/worker_pool.rb
lipsiadmin-5.1.2 lib/loops/worker_pool.rb
lipsiadmin-5.1.1 lib/loops/worker_pool.rb
lipsiadmin-5.1.0 lib/loops/worker_pool.rb
lipsiadmin-5.0.9 lib/loops/worker_pool.rb
lipsiadmin-5.0.8 lib/loops/worker_pool.rb
lipsiadmin-5.0.7 lib/loops/worker_pool.rb
lipsiadmin-5.0.6 lib/loops/worker_pool.rb
lipsiadmin-5.0.5 lib/loops/worker_pool.rb
lipsiadmin-5.0.4 lib/loops/worker_pool.rb
lipsiadmin-4.1.8 lib/loops/worker_pool.rb
lipsiadmin-5.0.0 lib/loops/worker_pool.rb
lipsiadmin-5.0.1 lib/loops/worker_pool.rb
lipsiadmin-5.0.2 lib/loops/worker_pool.rb
lipsiadmin-5.0.3 lib/loops/worker_pool.rb
lipsiadmin-3.4.2 lib/loops/worker_pool.rb
lipsiadmin-3.4.1 lib/loops/worker_pool.rb