Sha256: 2a819ef73a1e0a2ee4f52cfd71036c936dd5052f909af77a51291e19a2728f63

Contents?: true

Size: 888 Bytes

Versions: 2

Compression:

Stored size: 888 Bytes

Contents

module Juici
  class Watcher

    def self.instance
      @@instance ||= self.new
    end

    def initialize
      @active = true
    end

    def register_handler
      Signal.trap("CHLD") do
        begin
          if @active
            pid, status = Process.wait2(-1)
            $build_queue.purge(:pid, OpenStruct.new(:pid => pid))
            ::Juici.dbgp "Trying to find pid: #{pid}"
            handle(pid, status)
          end
        rescue Errno::ECHILD
          nil
        end
        $build_queue.bump! if $build_queue && @active
      end
    end

    def handle(pid, status)
      build = $build_queue.get_build_by_pid(pid)

      if status == 0
        build.success!
      else
        build.failure!
      end
      $build_queue.bump! if $build_queue
    end

    def shutdown!
      @active = false
    end

    def start
      register_handler
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
juici-0.0.1.alpha1 lib/juici/watcher.rb
juici-0.0.0.alpha1 lib/juici/watcher.rb