summaryrefslogtreecommitdiffstats
path: root/vespaclient-core
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-07 17:45:05 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-07 17:45:05 +0100
commit9fc71f40683f0fd697d81c0dcd0eee9caca5df7d (patch)
tree2273925c39590b31d052587322604eb9718f88ca /vespaclient-core
parent455067e6412c27caa198f1d3e336872f7dd7ddd4 (diff)
Allow for a Callback to complete early.
Diffstat (limited to 'vespaclient-core')
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java23
1 files changed, 15 insertions, 8 deletions
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
index 79218ded26d..3971855ca64 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/SharedSender.java
@@ -76,12 +76,16 @@ public class SharedSender implements ReplyHandler {
* @return true if there were no more pending, or false if the timeout expired.
*/
public boolean waitForPending(ResultCallback owner, long timeoutMs) {
- try {
- return getNonNullState(owner).waitPending(timeoutMs);
- } catch (InterruptedException e) {
+ OwnerState state = activeOwners.get(owner);
+ if (state != null) {
+ try {
+ return state.waitPending(timeoutMs);
+ } catch (InterruptedException e) {
+ return false;
+ }
}
- return false;
+ return true;
}
private OwnerState getNonNullState(ResultCallback owner) {
@@ -113,9 +117,12 @@ public class SharedSender implements ReplyHandler {
* @param owner the file to check for pending documents
*/
public void waitForPending(ResultCallback owner) {
- try {
- getNonNullState(owner).waitPending();
- } catch (InterruptedException e) { }
+ OwnerState state = activeOwners.get(owner);
+ if (state != null) {
+ try {
+ state.waitPending();
+ } catch (InterruptedException e) { }
+ }
}
/**
@@ -143,7 +150,7 @@ public class SharedSender implements ReplyHandler {
return;
}
- OwnerState state = getNonNullState(owner);
+ OwnerState state = activeOwners.get(owner);
if (state == null) {
state = new OwnerState();
activeOwners.put(owner, state);