def start_remote(host = nil, port = PORT, post_mortem = false)
return if @thread
return if started?
self.interface = nil
start
self.post_mortem if post_mortem
if port.kind_of?(Array)
cmd_port, ctrl_port = port
else
cmd_port, ctrl_port = port, port + 1
end
ctrl_port = start_control(host, ctrl_port)
yield if block_given?
mutex = Mutex.new
proceed = ConditionVariable.new
server = TCPServer.new(host, cmd_port)
@cmd_port = cmd_port = server.addr[1]
@thread = DebugThread.new do
while (session = server.accept)
self.interface = RemoteInterface.new(session)
if wait_connection
mutex.synchronize do
proceed.signal
end
end
end
end
if wait_connection
mutex.synchronize do
proceed.wait(mutex)
end
end
end