Sha256: 9e62a3ee80a5a11dbbc176b17855068a5ab42010ce160fc7706e997d0c11fcf8

Contents?: true

Size: 1.18 KB

Versions: 36

Compression:

Stored size: 1.18 KB

Contents

require 'win32/daemon'

module MCollective
  class WindowsDaemon < Win32::Daemon

    def self.daemonize_runner(pid=nil)
      raise "Writing pid files are not supported on the Windows Platform" if pid
      raise "The Windows Daemonizer should only be used on the Windows Platform" unless Util.windows?

      WindowsDaemon.mainloop
    end

    def service_main
      Log.debug("Starting Windows Service Daemon")

      @runner = Runner.new(nil)
      @runner.main_loop

      # On shut down there may be threads outside of the runner's context that are
      # in a sleeping state, causing the stop action to wait for them to cleanly exit.
      # We get around this by iterating the list of threads and killing everything that
      # isn't the main thread, letting us shut down cleanly.
      Thread.list.each do |t|
        if t != Thread.current
          t.kill
        end
      end
    end

    def service_stop
      Log.info("Windows service stopping")
      @runner.stop
    end

    def service_pause
      Log.info("Pausing MCollective Windows server")
      @runner.pause
    end

    def service_resume
      Log.info("Resuming MCollective Windows server")
      @runner.resume
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
mcollective-client-2.12.5 lib/mcollective/windows_daemon.rb
mcollective-client-2.12.4 lib/mcollective/windows_daemon.rb
mcollective-client-2.12.3 lib/mcollective/windows_daemon.rb
mcollective-client-2.12.1 lib/mcollective/windows_daemon.rb
mcollective-client-2.12.0 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.6 lib/mcollective/windows_daemon.rb
mcollective-client-2.11.4 lib/mcollective/windows_daemon.rb
mcollective-client-2.11.3 lib/mcollective/windows_daemon.rb
mcollective-client-2.11.2 lib/mcollective/windows_daemon.rb
mcollective-client-2.11.1 lib/mcollective/windows_daemon.rb
mcollective-client-2.11.0 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.4 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.3 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.2 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.1 lib/mcollective/windows_daemon.rb
mcollective-client-2.10.0 lib/mcollective/windows_daemon.rb
mcollective-client-2.8.7 lib/mcollective/windows_daemon.rb
mcollective-client-2.8.5 lib/mcollective/windows_daemon.rb
mcollective-client-2.8.8 lib/mcollective/windows_daemon.rb
mcollective-client-2.8.6 lib/mcollective/windows_daemon.rb