/******************************************************************************* * Copyright (c) 2000, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.core.tests.runtime; /** * Wrapper around the external processes that are running a J9 VM * and a J9 Proxy. * This allows to kill these processes when we exit this vm. */ class J9VirtualMachine extends LocalVirtualMachine { private Process proxyProcess; private AbstractReader proxyConsoleReader; private String proxyOutputFile; /** * Creates a new J9VirtualMachine from the Processes that runs this VM * and its J9 Proxy and with the given info. */ public J9VirtualMachine(Process vmProcess, int debugPort, String evalTargetPath, Process proxyProcess, String proxyOutputFile) { super(vmProcess, debugPort, evalTargetPath); this.proxyProcess = proxyProcess; this.proxyOutputFile = proxyOutputFile; // Start the Proxy console reader so that the proxy is not blocked on its stdout. if (this.proxyProcess != null) { if (this.proxyOutputFile == null) { this.proxyConsoleReader= new NullConsoleReader( "J9 Proxy Console Reader", this.proxyProcess.getInputStream()); } else { this.proxyConsoleReader= new ProxyConsoleReader( "J9 Proxy Console Reader", this.proxyProcess.getInputStream(), this.proxyOutputFile); } this.proxyConsoleReader.start(); } } /** * @see LocalVirtualMachine#shutDown */ public synchronized void shutDown() throws TargetException { super.shutDown(); if (this.proxyConsoleReader != null) this.proxyConsoleReader.stop(); if (this.proxyProcess != null) { this.proxyProcess.destroy(); this.proxyProcess = null; } } }