Sha256: 93211fc2a2aa9a38ca426862ca0b90515895e98539dd764b866d9222ab279b32

Contents?: true

Size: 764 Bytes

Versions: 15

Compression:

Stored size: 764 Bytes

Contents

require 'girl_friday'

module Adrian
  class GirlFridayDispatcher < Dispatcher
    def gf_queue_name
      @options[:name] || 'adrian_queue'
    end

    def gf_queue_size
      @options[:size]
    end

    def gf_queue
      @gf_queue ||= GirlFriday::WorkQueue.new(gf_queue_name, :size => gf_queue_size) do |item, worker_class|
        worker = worker_class.new(item)
        worker.report_to(self)
        worker.perform
      end
    end

    def delegate_work(item, worker_class)
      gf_queue.push([item, worker_class])
    end

    def wait_for_empty
      gf_queue.wait_for_empty

      sleep(0.5)

      while gf_queue.status[gf_queue_name][:busy] != 0
        sleep(0.5)
      end
    end

    def stop
      super
      wait_for_empty
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
adrian-2.0.2 lib/adrian/girl_friday_dispatcher.rb
adrian-2.0.1 lib/adrian/girl_friday_dispatcher.rb
adrian-2.0.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.5.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.4.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.3.3 lib/adrian/girl_friday_dispatcher.rb
adrian-1.3.2 lib/adrian/girl_friday_dispatcher.rb
adrian-1.3.1 lib/adrian/girl_friday_dispatcher.rb
adrian-1.3.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.2.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.1.2 lib/adrian/girl_friday_dispatcher.rb
adrian-1.1.1 lib/adrian/girl_friday_dispatcher.rb
adrian-1.1.0 lib/adrian/girl_friday_dispatcher.rb
adrian-1.0.1 lib/adrian/girl_friday_dispatcher.rb
adrian-1.0.0 lib/adrian/girl_friday_dispatcher.rb