From 9eeeeee78c2b7c3f6e8cda59779f1c9be036357e Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Thu, 19 Mar 2009 23:34:18 +0100 Subject: [PATCH] =?utf8?q?Use=20distinct=20identifier=20for=20every=20?= =?utf8?q?=E2=80=9CListPeers=E2=80=9D=20request.=20Only=20react=20to=20?= =?utf8?q?=E2=80=9CPeer=E2=80=9D=20and=20=E2=80=9CEndListPeers=E2=80=9D=20?= =?utf8?q?messages=20with=20the=20same=20identifier.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/net/pterodactylus/fcp/highlevel/FcpClient.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/net/pterodactylus/fcp/highlevel/FcpClient.java b/src/net/pterodactylus/fcp/highlevel/FcpClient.java index 90ad4da..71b118e 100644 --- a/src/net/pterodactylus/fcp/highlevel/FcpClient.java +++ b/src/net/pterodactylus/fcp/highlevel/FcpClient.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; +import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.concurrent.CountDownLatch; @@ -197,16 +198,19 @@ public class FcpClient { * if an FCP error occurs */ public Set getPeers(final boolean withMetadata, final boolean withVolatile) throws IOException, FcpException { - final Set peers = new HashSet(); + final Set peers = Collections.synchronizedSet(new HashSet()); new ExtendedFcpAdapter() { + /** The ID of the “ListPeers” request. */ + private String identifier = "list-peers-" + System.currentTimeMillis(); + /** * {@inheritDoc} */ @Override @SuppressWarnings("synthetic-access") public void run() throws IOException { - fcpConnection.sendMessage(new ListPeers("list-peers", withMetadata, withVolatile)); + fcpConnection.sendMessage(new ListPeers(identifier, withMetadata, withVolatile)); } /** @@ -214,7 +218,9 @@ public class FcpClient { */ @Override public void receivedPeer(FcpConnection fcpConnection, Peer peer) { - peers.add(peer); + if (peer.getIdentifier().equals(identifier)) { + peers.add(peer); + } } /** @@ -222,7 +228,9 @@ public class FcpClient { */ @Override public void receivedEndListPeers(FcpConnection fcpConnection, EndListPeers endListPeers) { - completionLatch.countDown(); + if (endListPeers.getIdentifier().equals(identifier)) { + completionLatch.countDown(); + } } }.execute(); return peers; -- 2.7.4