class RSpec::Core::Bisect::Channel

Wraps a pipe to support sending objects between a child and parent process. @private

Public Class Methods

new() click to toggle source
# File lib/rspec/core/bisect/utilities.rb, line 35
def initialize
  @read_io, @write_io = IO.pipe
end

Public Instance Methods

close() click to toggle source

rubocop:enable Security/MarshalLoad

# File lib/rspec/core/bisect/utilities.rb, line 51
def close
  @read_io.close
  @write_io.close
end
receive() click to toggle source

rubocop:disable Security/MarshalLoad

# File lib/rspec/core/bisect/utilities.rb, line 45
def receive
  packet_size = Integer(@read_io.gets)
  Marshal.load(@read_io.read(packet_size))
end
send(message) click to toggle source
# File lib/rspec/core/bisect/utilities.rb, line 39
def send(message)
  packet = Marshal.dump(message)
  @write_io.write("#{packet.bytesize}\n#{packet}")
end