Ray points out this can usefully be an AtomicInteger.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6155 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -25,6 +25,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
@@ -504,7 +505,7 @@ public abstract class PeerManager
|
|||||||
|
|
||||||
final Map<String, T> results = Maps.newHashMap();
|
final Map<String, T> results = Maps.newHashMap();
|
||||||
final Map<String, String> failures = Maps.newHashMap();
|
final Map<String, String> failures = Maps.newHashMap();
|
||||||
final Set<String> completedNodes = Sets.newHashSet();
|
final AtomicInteger completedNodes = new AtomicInteger();
|
||||||
for (final String node : nodes) {
|
for (final String node : nodes) {
|
||||||
invokeNodeRequest(node, requestBytes, new InvocationService.ResultListener() {
|
invokeNodeRequest(node, requestBytes, new InvocationService.ResultListener() {
|
||||||
public void requestProcessed (Object result) {
|
public void requestProcessed (Object result) {
|
||||||
@@ -519,8 +520,7 @@ public abstract class PeerManager
|
|||||||
nodeDone(node);
|
nodeDone(node);
|
||||||
}
|
}
|
||||||
protected void nodeDone (String node) {
|
protected void nodeDone (String node) {
|
||||||
completedNodes.add(node);
|
if (completedNodes.incrementAndGet() == nodes.size()) {
|
||||||
if (nodes.size() == completedNodes.size()) {
|
|
||||||
// if all nodes have responded, let caller know
|
// if all nodes have responded, let caller know
|
||||||
listener.requestsProcessed(new NodeRequestsResultImpl<T>(results, failures));
|
listener.requestsProcessed(new NodeRequestsResultImpl<T>(results, failures));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user