Revision: 63066
Updated Code
at April 5, 2013 07:29 by laurenceosx
Updated Code
def threadedPrintStringBuffer( StringBuffer aStringBuffer, Boolean aStop = false ) {
// useful for real-time printing of process output
/*
Example use:
def pb = new ProcessBuilder( 'cmd', '/c', 'dir' );
def process = pb.start();
def sb1 = new StringBuffer();
process.consumeProcessOutput( sb1, sb1 );
def stop = threadedPrintStringBuffer( sb1 );
process.waitFor();
stop = true;
*/
Thread.start {
int sbOldSize = 0;
int sbNewSize = 0;
def nap = { itNapTime = 100 -> Thread.sleep(itNapTime); } ;
int sz, delta;
def somethingToDo = {
sz = aStringBuffer.length();
delta = sz - sbOldSize;
(delta > 0); // return
} ;
def doWork = {
sbNewSize = sz;
System.out.print( aStringBuffer.substring( sbOldSize, sbNewSize-1 ) );
System.out.flush(); // very important !!!
sbOldSize = sbNewSize;
} ;
while(true) {
if ( somethingToDo() ) { doWork(); }
nap();
if ( aStop && !somethingToDo() ) { break; }
} // end while
} // end Thread
return aStop; // !!!
}
Revision: 63065
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 5, 2013 06:26 by laurenceosx
Initial Code
def threadedPrintStringBuffer( StringBuffer aStringBuffer, Boolean aStop = false ) {
// useful for real-time printing of process output
/*
Example use:
def pb = new ProcessBuilder( 'cmd', '/c', 'dir' );
def process = pb.start();
def sb1 = new StringBuffer();
process.waitForProcessOutput( sb1, sb1 );
def stop = threadedPrintStringBuffer( sb1 );
process.waitFor();
stop = true;
*/
Thread.start {
int sbOldSize = 0;
int sbNewSize = 0;
while(true) {
int sz = aStringBuffer.length();
int delta = sz - sbOldSize;
if ( delta > 0 ) {
sbNewSize = sz;
System.out.print( aStringBuffer.substring( sbOldSize, sbNewSize-1 ) );
System.out.flush(); // very important !!!
sbOldSize = sbNewSize;
}
if (aStop) { break; } // !!!
Thread.sleep(100);
} // end while
}
return aStop; // !!!
}
Initial URL
Initial Description
None
Initial Title
Groovy - threadedPrintStringBuffer
Initial Tags
groovy
Initial Language
Groovy