From: Jorg J. <jj...@us...> - 2002-02-28 06:45:03
|
Update of /cvsroot/compiere/base/src/org/compiere/util In directory usw-pr-cvs1:/tmp/cvs-serv486/src/org/compiere/util Modified Files: Access.java Task.java Log Message: . Index: Access.java =================================================================== RCS file: /cvsroot/compiere/base/src/org/compiere/util/Access.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Access.java 7 Jan 2002 06:26:55 -0000 1.3 --- Access.java 28 Feb 2002 06:45:00 -0000 1.4 *************** *** 20,24 **** /** ! * Data Access and Security - No Instances * <br> * <pre> --- 20,24 ---- /** ! * Data Access and Security - No Instances. * <br> * <pre> Index: Task.java =================================================================== RCS file: /cvsroot/compiere/base/src/org/compiere/util/Task.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Task.java 27 Feb 2002 15:03:54 -0000 1.1 --- Task.java 28 Feb 2002 06:45:00 -0000 1.2 *************** *** 44,50 **** /** The Error Output Stream of process */ private InputStream m_errStream; /** Read Out */ ! private Runnable m_outReader = new Runnable() { public void run() --- 44,52 ---- /** The Error Output Stream of process */ private InputStream m_errStream; + /** The Input Stream of process */ + private OutputStream m_inStream; /** Read Out */ ! private Thread m_outReader = new Thread() { public void run() *************** *** 54,60 **** { int c; ! while ((c = m_outStream.read()) != -1) { ! System.out.print((char)c); m_out.append((char)c); } --- 56,62 ---- { int c; ! while ((c = m_outStream.read()) != -1 && !isInterrupted()) { ! // System.out.print((char)c); m_out.append((char)c); } *************** *** 70,74 **** /** Read Out */ ! private Runnable m_errReader = new Runnable() { public void run() --- 72,76 ---- /** Read Out */ ! private Thread m_errReader = new Thread() { public void run() *************** *** 78,84 **** { int c; ! while ((c = m_errStream.read()) != -1) { ! System.err.print((char)c); m_err.append((char)c); } --- 80,86 ---- { int c; ! while ((c = m_errStream.read()) != -1 && !isInterrupted()) { ! // System.err.print((char)c); m_err.append((char)c); } *************** *** 106,125 **** m_outStream = m_child.getInputStream(); m_errStream = m_child.getErrorStream(); // ! Thread tout = new Thread(m_outReader); ! tout.start(); ! Thread terr = new Thread(m_errReader); ! terr.start(); // try { ! tout.join(); ! terr.join(); m_child.waitFor(); } catch (InterruptedException ie) { ! Log.error("Task.run (ie)", ie); } Log.trace(Log.l4_Data, "Task.run - done"); } --- 108,141 ---- m_outStream = m_child.getInputStream(); m_errStream = m_child.getErrorStream(); + m_inStream = m_child.getOutputStream(); // ! if (checkInterrupted()) ! return; ! m_outReader.start(); ! m_errReader.start(); // try { ! if (checkInterrupted()) ! return; ! m_errReader.join(); ! if (checkInterrupted()) ! return; ! m_outReader.join(); ! if (checkInterrupted()) ! return; m_child.waitFor(); } catch (InterruptedException ie) { ! // Log.error("Task.run (ie)", ie); ! } ! // ExitValue ! try ! { ! if (m_child != null) ! Log.trace(Log.l5_DData, "Task.run - ExitValue=" + m_child.exitValue()); } + catch (Exception e) {} Log.trace(Log.l4_Data, "Task.run - done"); } *************** *** 131,134 **** --- 147,185 ---- /** + * Check if interrupted + * @return true if interrupted + */ + private boolean checkInterrupted() + { + if (isInterrupted()) + { + Log.trace(Log.l3_Util, "Task.checkInterrupted - true"); + // interrupt child processes + if (m_child != null) + m_child.destroy(); + m_child = null; + if (m_outReader != null && m_outReader.isAlive()) + m_outReader.interrupt(); + m_outReader = null; + if (m_errReader != null && m_errReader.isAlive()) + m_errReader.interrupt(); + m_errReader = null; + // close Streams + if (m_inStream != null) + try { m_inStream.close(); } catch (Exception e) {} + m_inStream = null; + if (m_outStream != null) + try { m_outStream.close(); } catch (Exception e) {} + m_outStream = null; + if (m_errStream != null) + try { m_errStream.close(); } catch (Exception e) {} + m_errStream = null; + // + return true; + } + return false; + } // checkInterrupted + + /** * Get Out Info * @return StringBuffer *************** *** 148,150 **** --- 199,209 ---- } // getErr + /** + * Get The process input stream - i.e. we output to it + * @return OutputStream + */ + public OutputStream getInStream() + { + return m_inStream; + } // getInStream } // Task |