Sha256: c5ed6a9e47d8e70c8ca9d2e03444a60a9ab7fa5d534123eefd4bdadcaf45982a

Contents?: true

Size: 936 Bytes

Versions: 7

Compression:

Stored size: 936 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)
      @fetcher = Shoryuken::Fetcher.new_link(manager)

      @done = false

      manager.fetcher = @fetcher
    end

    def stop(options = {})
      watchdog('Launcher#stop') do
        @done = true
        @fetcher.terminate if @fetcher.alive?

        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' }
      exit 1
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
shoryuken-2.0.11 lib/shoryuken/launcher.rb
shoryuken-2.0.4 lib/shoryuken/launcher.rb
shoryuken-2.0.3 lib/shoryuken/launcher.rb
shoryuken-2.0.2 lib/shoryuken/launcher.rb
shoryuken-2.0.1 lib/shoryuken/launcher.rb
shoryuken-2.0.0 lib/shoryuken/launcher.rb
shoryuken-1.0.3 lib/shoryuken/launcher.rb