/*******************************************************************************
 * Copyright (c) 2000, 2006 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;

import java.io.*;

/**
 * A <code>ProxyConsoleReader</code> reads the ouput from the proxy and
 * redirects it to a file or to the stdout if "con" is the name of the file.
 */
class ProxyConsoleReader extends AbstractReader {
	private InputStream input;
	private OutputStream output;
/*
 * Creates a new proxy console reader that will read from the given input stream
 * and rewrite what's read to the given file (or the stdout is the file name is
 * "con")
 */
public ProxyConsoleReader(String name, InputStream input, String fileName) {
	super(name);
	this.input = input;
	if (fileName.equals("con")) {
		this.output= System.out;
	} else {
		try {
			this.output= new FileOutputStream(fileName);
		} catch (IOException e) {
			System.out.println("Could not create file " + fileName + ". Redirecting to stdout");
			this.output= System.out;
		}
	}
}
/**
 * Continuously reads from the proxy output and redirect what's read to
 * this reader's file.
 */
protected void readerLoop() {
	try {
		byte[] buffer= new byte[1024];
		int read= 0;
		while (!this.isStopping && read != -1) {
			read= this.input.read(buffer);
			if (read != -1)
				this.output.write(buffer, 0, read);
		}
	} catch (java.io.IOException e) {
	}
}
/**
 * Stop this reader
 */
public void stop() {
	super.stop();
	try {
		if (this.output != System.out)
			this.output.close();
	} catch (IOException e) {
	}
}
}
