|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.openide.compiler; import org.openide.execution.ExecutorTask; import org.openide.windows.InputOutput; /** SysProcess class for external compiler executor (CompilerExecutor). * * @author Ales Novak */ class CompilerSysProcess extends ExecutorTask { static final int INTERRUPTED = 97943; /** reference to external prcess */ private Process process; /** reference to parsing thread - err */ private ErrorsParsingThread thr1; /** reference to parsing thread - std */ private ErrorsParsingThread thr2; /** Foreign ExecutorTask */ private ExecutorTask him; /** * @param eCompiler * @param classPath * @param proc is a Process obtained from Runtime.exec call */ CompilerSysProcess(Runnable run, ExternalCompilerGroup eCompile, Process proc, ExternalCompiler.ErrorExpression err) { super(run); process = proc; thr1 = new ErrorsParsingThread(proc.getErrorStream(), eCompile, err); thr1.start(); thr2 = new ErrorsParsingThread(proc.getInputStream(), eCompile, err); thr2.start(); Thread.yield(); } /** destroys the process */ public void stop() { process.destroy(); thr1.stopParsing(true); thr2.stopParsing(true); him.stop(); } /** waits for the end of external compiler */ public int result() { try { int ret = process.waitFor(); return ret; } catch (InterruptedException e) { process.destroy(); return INTERRUPTED; } finally { thr1.stopParsing(false); thr2.stopParsing(false); notifyFinished(); } } public String getName() { return ""; // NOI18N } public InputOutput getInputOutput() { return him.getInputOutput(); } public void setExecutorTask(ExecutorTask et) { him = et; } public void run() { } static class InterruptedProcess extends ExecutorTask { InterruptedProcess() { super(null); } public void stop() { } public int result() { return INTERRUPTED; } public InputOutput getInputOutput() { return InputOutput.NULL; } } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.