public abstract class CancelCriterion extends Object
checkCancelInProgress(Throwable)
. Generally the pattern is to check before performing an
operation, check if the service is canceled before propagating an exception further up the stack,
and check for cancellation inside a long loop. Eg.
while (true) { c.checkCancelInProgress(null); try { dispatchEvents(); } catch (IOException e) { c.checkCancelInProgress(e); throw e; } }
CancelException
Constructor and Description |
---|
CancelCriterion() |
Modifier and Type | Method and Description |
---|---|
abstract String |
cancelInProgress()
Indicate if the service is in the progress of being cancelled.
|
void |
checkCancelInProgress() |
void |
checkCancelInProgress(Throwable e)
See if the current operation is being cancelled.
|
protected String |
checkFailure()
Use this utility function in your implementation of cancelInProgress() and cancelled() to
indicate a system failure
|
abstract RuntimeException |
generateCancelledException(Throwable throwable)
Template factory method for generating the exception to be thrown by
checkCancelInProgress(Throwable) . |
boolean |
isCancelInProgress()
Checks to see if a cancellation is in progress.
|
public abstract String cancelInProgress()
InterruptedException
, that the current operation should be
cancelled.protected String checkFailure()
public void checkCancelInProgress(Throwable e)
RuntimeException
(usually a CancelException
).e
- an underlying exception or null if there is no exception that triggered this checkcancelInProgress()
public void checkCancelInProgress()
public abstract RuntimeException generateCancelledException(Throwable throwable)
checkCancelInProgress(Throwable)
. Override this to specify different exception for
checkCancelInProgress() to throw.
This method should wrap the exception in a service specific CancelationException (eg
CacheClosedException). or return null if the service is not being canceled.throwable
- an underlying exception, if anypublic boolean isCancelInProgress()