Module: Asir::Transport::Conduit

Defined in:
lib/asir/transport/conduit.rb

Overview

Conduit service support.

Instance Method Summary collapse

Instance Method Details

#_start_conduit!Object

Raises:

  • (Error::SubclassResponsibility)


38
39
40
# File 'lib/asir/transport/conduit.rb', line 38

def _start_conduit!
  raise Error::SubclassResponsibility
end

#start_conduit!(options = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/asir/transport/conduit.rb', line 7

def start_conduit! options = nil
  opts = { :fork => true }
  opts.update(options) if options
  _log { "start_conduit! #{self}" } if @verbose >= 1
  in_fork = opts[:fork]
  raise "already running #{@conduit_pid} #{@conduit_cmd}" if @conduit_pid
  if in_fork
    @conduit_pid = ::Process.fork do
    _log { "start_conduit! #{self} starting pid=#{$$.inspect}" } if @verbose >= 2
      _start_conduit!
      raise "Could not exec"
    end
    _log { "start_conduit! #{self} started pid=#{@conduit_pid.inspect}" } if @verbose >= 2
  else
    _start_conduit!
  end
  self
end

#stop_conduit!(opts = nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/asir/transport/conduit.rb', line 26

def stop_conduit! opts = nil
  if @conduit_pid
    _log { "stop_conduit! #{self} pid=#{@conduit_pid.inspect}" } if @verbose >= 1
    ::Process.kill( (opts && opts[:signal]) || 'TERM', @conduit_pid)
    ::Process.waitpid @conduit_pid
    # File.unlink @redis_conf
  end
  self
ensure
  @conduit_pid = nil
end