Add ability to parse HTTP-format moratorium times

(since pretty much every user wants this).
This commit is contained in:
Dan Egnor
2010-02-03 17:01:10 -08:00
parent fa6bc84e01
commit 2991425379
2 changed files with 51 additions and 1 deletions

View File

@@ -192,7 +192,6 @@ public class OperationScheduler {
/**
* Forbid any operations until after a certain (absolute) time.
* Commonly used when a server returns a "Retry-After:" type directive.
* Limited by {@link #Options.maxMoratoriumMillis}.
*
* @param millis wall clock time ({@link System#currentTimeMillis()}) to
@@ -205,6 +204,29 @@ public class OperationScheduler {
.commit();
}
/**
* Forbid any operations until after a certain time, as specified in
* the format used by the HTTP "Retry-After" header.
* Limited by {@link #Options.maxMoratoriumMillis}.
*
* @param retryAfter moratorium time in HTTP format
* @return true if a time was successfully parsed
*/
public boolean setMoratoriumTimeHttp(String retryAfter) {
try {
long ms = Long.valueOf(retryAfter) * 1000;
setMoratoriumTimeMillis(ms + System.currentTimeMillis());
return true;
} catch (NumberFormatException nfe) {
try {
setMoratoriumTimeMillis(HttpDateTime.parse(retryAfter));
return true;
} catch (IllegalArgumentException iae) {
return false;
}
}
}
/**
* Enable or disable all operations. When disabled, all calls to
* {@link #getNextTimeMillis()} return {@link Long#MAX_VALUE}.