Class: Fluent::DetachProcessManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/fluent/process.rb

Defined Under Namespace

Classes: Broker, DelayedForwarder, Forwarder, MultiForwarder

Instance Method Summary collapse

Constructor Details

#initializeDetachProcessManager

Returns a new instance of DetachProcessManager.



42
43
44
45
46
# File 'lib/fluent/process.rb', line 42

def initialize
  require 'drb'
  DRb.start_service(create_drb_uri, Broker.new)
  @parent_uri = DRb.uri
end

Instance Method Details

#fork(delegate_object) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/fluent/process.rb', line 48

def fork(delegate_object)
  ipr, ipw = IO.pipe  # child Engine.emit_stream -> parent Engine.emit_stream
  opr, opw = IO.pipe  # parent target.emit_events -> child target.emit_events

  pid = Process.fork
  if pid
    # parent process
    ipw.close
    opr.close
    forward_thread = process_parent(ipr, opw, pid, delegate_object)
    return pid, forward_thread
  end

  # child process
  ipr.close
  opw.close
  forward_thread = process_child(ipw, opr, delegate_object)
  return nil, forward_thread
end