Sha256: 2182333c07201d138af17706b4f3781f9008b060fd25ca7391a8935d5d5f06b8

Contents?: true

Size: 953 Bytes

Versions: 2

Compression:

Stored size: 953 Bytes

Contents

module Shoryuken
  class Launcher
    include Celluloid
    include Util

    trap_exit :actor_died

    attr_accessor :manager

    def initialize
      @condvar = Celluloid::Condition.new
      @manager = Shoryuken::Manager.new_link(@condvar)

      @done = false

      manager.fetcher = Shoryuken::Fetcher.new
      manager.polling_strategy = Shoryuken.options[:polling_strategy].new(Shoryuken.queues)
    end

    def stop(options = {})
      watchdog('Launcher#stop') do
        @done = true

        manager.async.stop(shutdown: !!options[:shutdown], timeout: Shoryuken.options[:timeout])
        @condvar.wait
        manager.terminate
      end
    end

    def run
      watchdog('Launcher#run') do
        manager.async.start
      end
    end

    def actor_died(actor, reason)
      return if @done
      logger.warn { "Shoryuken died due to the following error, cannot recover, process exiting: #{reason}" }
      exit 1
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shoryuken-2.1.3 lib/shoryuken/launcher.rb
shoryuken-2.1.2 lib/shoryuken/launcher.rb