From: <st...@us...> - 2010-02-23 16:05:21
|
Revision: 8227 http://smartfrog.svn.sourceforge.net/smartfrog/?rev=8227&view=rev Author: steve_l Date: 2010-02-23 16:05:15 +0000 (Tue, 23 Feb 2010) Log Message: ----------- SFOS-1452 - make the timeout state more accessible, some other accessors and constant error messages Modified Paths: -------------- trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java Modified: trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java =================================================================== --- trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java 2010-02-23 16:03:03 UTC (rev 8226) +++ trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java 2010-02-23 16:05:15 UTC (rev 8227) @@ -20,7 +20,8 @@ package org.smartfrog.sfcore.utils; /** - * Utility class to spin and timeout + * Utility class to spin and timeout. It can sleep for a predefined wait interval, and will, if interrupted, + * throw a {@link SmartFrogOperationTimedOutException} in such a situation. * </p> * After timeout, any exception set with {@link #setLastThrown(Throwable)} will be included * as a nested exception, for more meaningful stack traces @@ -28,10 +29,12 @@ */ public class Spinner { - private String operation; - private long waitInterval; - private long endtime; + private final String operation; + private final long waitInterval; + private final long endtime; private Throwable lastThrown; + public static final String TIMED_OUT = " timed out"; + private static final String WAS_INTERRUPTED = " was interrupted"; /** * Spin until timeout. The timeout is constructed from now+timeout, so create @@ -51,21 +54,57 @@ * @throws SmartFrogOperationTimedOutException if we have already timed out. This check occurs before any sleep */ public void sleep() throws SmartFrogOperationTimedOutException { - if (System.currentTimeMillis() > endtime) { - throw new SmartFrogOperationTimedOutException(operation + " timed out", lastThrown); + if (isTimedOut()) { + throw new SmartFrogOperationTimedOutException(operation + TIMED_OUT, lastThrown); } try { Thread.sleep(waitInterval); } catch (InterruptedException e) { - throw new SmartFrogOperationTimedOutException(operation + " was interrupted", lastThrown); + throw new SmartFrogOperationTimedOutException(operation + WAS_INTERRUPTED, lastThrown); } } /** + * Test for being timed out. + * @return true if the current clock time is greater than the end time + */ + public boolean isTimedOut() { + return System.currentTimeMillis() > endtime; + } + + /** * Record the last thrown exception * @param lastThrown an exception to remember. */ public void setLastThrown(Throwable lastThrown) { this.lastThrown = lastThrown; } + + /** + * Get the name of the operation + * @return the operation name + */ + public String getOperation() { + return operation; + } + + /** + * Get the wait interval + * @return wait interval in millis + */ + public long getWaitInterval() { + return waitInterval; + } + + /** + * Get the end time + * @return end time in milliseconds since the epoch began + */ + public long getEndtime() { + return endtime; + } + + public Throwable getLastThrown() { + return lastThrown; + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <st...@us...> - 2011-08-04 14:52:04
|
Revision: 8720 http://smartfrog.svn.sourceforge.net/smartfrog/?rev=8720&view=rev Author: steve_l Date: 2011-08-04 14:51:59 +0000 (Thu, 04 Aug 2011) Log Message: ----------- Make it possible to change the operation text mid-cycle Modified Paths: -------------- trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java Modified: trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java =================================================================== --- trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java 2011-08-04 14:50:47 UTC (rev 8719) +++ trunk/core/smartfrog/src/org/smartfrog/sfcore/utils/Spinner.java 2011-08-04 14:51:59 UTC (rev 8720) @@ -32,7 +32,7 @@ */ public class Spinner { - private final String operation; + private volatile String operation; private final long waitInterval; private final long endtime; private Throwable lastThrown; @@ -96,6 +96,14 @@ } /** + * Set the operation field, which is used in the exception messages + * @param operation the text to use in timeout and interrupt exceptions + */ + public void setOperation(final String operation) { + this.operation = operation; + } + + /** * Get the wait interval * @return wait interval in millis */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |