Copyright (c) 2000, 2013 IBM Corporation and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
IBM Corporation - initial API and implementation
/*******************************************************************************
* Copyright (c) 2000, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.debug.internal.core;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.debug.core.IStreamListener;
import org.eclipse.debug.core.model.IStreamMonitor;
import org.eclipse.debug.core.model.IStreamsProxy2;
public class NullStreamsProxy implements IStreamsProxy2 {
private NullStreamMonitor outputStreamMonitor;
private NullStreamMonitor errorStreamMonitor;
public NullStreamsProxy(Process process) {
outputStreamMonitor = new NullStreamMonitor(process.getInputStream());
errorStreamMonitor = new NullStreamMonitor(process.getErrorStream());
}
@Override
public void closeInputStream() throws IOException {
}
@Override
public IStreamMonitor getErrorStreamMonitor() {
return errorStreamMonitor;
}
@Override
public IStreamMonitor getOutputStreamMonitor() {
return outputStreamMonitor;
}
@Override
public void write(String input) throws IOException {
}
private class NullStreamMonitor implements IStreamMonitor {
private InputStream fStream;
public NullStreamMonitor(InputStream stream) {
fStream = stream;
startReaderThread();
}
private void startReaderThread() {
Thread thread = new Thread((Runnable) () -> {
byte[] bytes = new byte[1024];
try {
while (fStream.read(bytes) >= 0) {
// do nothing
}
} catch (IOException e) {
}
}, DebugCoreMessages.NullStreamsProxy_0);
thread.setDaemon(true);
thread.start();
}
@Override
public void addListener(IStreamListener listener) {
}
@Override
public String getContents() {
return ""; //$NON-NLS-1$
}
@Override
public void removeListener(IStreamListener listener) {
}
}
}