class Opal::BuilderScheduler::Prefork::Fork
Public Class Methods
new(forkset) { |self| ... }
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 133 def initialize(forkset) @parent_read, @child_write = IO.pipe(binmode: true) @child_read, @parent_write = IO.pipe(binmode: true) @forkset = forkset @in_fork = false @pid = fork do @in_fork = true begin @parent_read.close @parent_write.close yield(self) rescue => error send(:exception, error) ensure send(:close) unless write_io.closed? @child_write.close end end @child_read.close @child_write.close end
Public Instance Methods
close()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 159 def close send(:close) @parent_write.close end
eof?()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 190 def eof? write_io.closed? end
fork?()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 178 def fork? @in_fork end
goodbye()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 164 def goodbye read_io.close unless read_io.closed? end
read_io()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 182 def read_io fork? ? @child_read : @parent_read end
recv()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 198 def recv recv_message(read_io) end
recv_message(io)
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 173 def recv_message(io) length, = *io.read(8).unpack('Q') Marshal.load(io.read(length)) # rubocop:disable Security/MarshalLoad end
send(*msg)
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 194 def send(*msg) send_message(write_io, msg) end
send_message(io, msg)
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 168 def send_message(io, msg) msg = Marshal.dump(msg) io.write([msg.length].pack('Q') + msg) end
wait()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 202 def wait Process.waitpid(@pid, Process::WNOHANG) end
write_io()
click to toggle source
# File lib/opal/builder_scheduler/prefork.rb, line 186 def write_io fork? ? @child_write : @parent_write end