public class GraphSemaphore extends Semaphore {
- private static final long serialVersionUID = 2114861433176831938L;
-
- private final AsyncReadGraph graph;
-
- public GraphSemaphore(AsyncReadGraph graph, int permits) {
- super(permits);
- this.graph = graph;
- }
-
- public void waitFor(int permits) throws DatabaseException, InterruptedException {
-
- boolean success = false;
- success = tryAcquire(permits);
- if(success) return;
-
- while(!success) {
-
- if(graph.performPending()) {
- // Some task was done
- success = tryAcquire(permits);
- } else {
- // Nothing to do - just wait
- try {
- success = tryAcquire(permits, 10, TimeUnit.SECONDS);
- if(!success) throw new DatabaseException("Timeout while waiting for async request to complete.");
- } catch (InterruptedException e) {
- throw new DatabaseException(e);
- }
- }
-
- }
-
-
- }
-
-
+ private static final long serialVersionUID = 2114861433176831938L;
+ private final AsyncReadGraph graph;
+
+ public GraphSemaphore(AsyncReadGraph graph, int permits) {
+ super(permits);
+ this.graph = graph;
+ }
+
+ public void waitFor(int permits) throws DatabaseException, InterruptedException {
+ boolean success = false;
+ success = tryAcquire(permits);
+ if (success)
+ return;
+
+ while (!success) {
+ if (graph.performPending()) {
+ // Some task was done
+ success = tryAcquire(permits);
+ } else {
+ // Nothing to do - just wait
+ try {
+ success = tryAcquire(permits, 10, TimeUnit.SECONDS);
+ if (!success)
+ throw new DatabaseException("Timeout while waiting for async request to complete.");
+ } catch (InterruptedException e) {
+ throw new DatabaseException(e);
+ }
+ }
+ }
+ }
}