Sha256: 160bfc8c8c85f6348a9edce6663aeb2fbd86d83df50004585b833685bface8de
Contents?: true
Size: 1.33 KB
Versions: 2
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true module Nonnative class Process < Runner def initialize(service) super service @timeout = Nonnative::Timeout.new(service.timeout) end def start unless process_exists? proxy.start @pid = process_spawn wait_start end pid end def stop if process_exists? process_kill proxy.stop wait_stop end pid end def memory return if pid.nil? @memory ||= GetProcessMem.new(pid) end protected def wait_stop timeout.perform do ::Process.waitpid2(pid) end end private attr_reader :pid, :timeout def process_kill signal = Signal.list[service.signal || 'INT'] || Signal.list['INT'] ::Process.kill(signal, pid) end def process_spawn environment = service.environment || {} environment = environment.transform_keys(&:to_s).transform_values(&:to_s) environment.each_key do |k| environment[k] = ENV[k] || environment[k] end spawn(environment, service.command, %i[out err] => [service.log, 'a']) end def process_exists? return false if pid.nil? signal = Signal.list['EXIT'] ::Process.kill(signal, pid) true rescue Errno::ESRCH false end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nonnative-1.57.0 | lib/nonnative/process.rb |
nonnative-1.56.1 | lib/nonnative/process.rb |