# class Puma::Cluster::Worker

### Attributes

index[R]
last_checkin[R]
last_status[R]
phase[R]
pid[R]
signal[R]

### Public Class Methods

new(idx, pid, phase, options) click to toggle source

    # File lib/puma/cluster.rb, line 51
    def initialize(idx, pid, phase, options)
      @index = idx
      @pid = pid
      @phase = phase
      @stage = :started
      @signal = "TERM"
      @options = options
      @first_term_sent = nil
      @last_checkin = Time.now
      @last_status = '{}'
      @dead = false
    end

### Public Instance Methods

boot!() click to toggle source

    # File lib/puma/cluster.rb, line 70
    def boot!
      @last_checkin = Time.now
      @stage = :booted
    end

booted?() click to toggle source

    # File lib/puma/cluster.rb, line 66
    def booted?
      @stage == :booted
    end

dead!() click to toggle source

    # File lib/puma/cluster.rb, line 79
    def dead!
      @dead = true
    end

dead?() click to toggle source

    # File lib/puma/cluster.rb, line 75
    def dead?
      @dead
    end

hup() click to toggle source

    # File lib/puma/cluster.rb, line 110
    def hup
      Process.kill "HUP", @pid
    rescue Errno::ESRCH
    end

kill() click to toggle source

    # File lib/puma/cluster.rb, line 105
    def kill
      Process.kill "KILL", @pid
    rescue Errno::ESRCH
    end

ping!(status) click to toggle source

    # File lib/puma/cluster.rb, line 83
    def ping!(status)
      @last_checkin = Time.now
      @last_status = status
    end

ping_timeout?(which) click to toggle source

    # File lib/puma/cluster.rb, line 88
    def ping_timeout?(which)
      Time.now - @last_checkin > which
    end

term() click to toggle source

    # File lib/puma/cluster.rb, line 92
    def term
      begin
        if @first_term_sent && (Time.now - @first_term_sent) > @options[:worker_shutdown_timeout]
          @signal = "KILL"
        else
          @first_term_sent ||= Time.now
        end

        Process.kill @signal, @pid
      rescue Errno::ESRCH
      end
    end