X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FClientHelloImpl.java;h=3ded685a0c4877af938292fcb23ad28e4601c5f4;hb=1d2048edc0856425c91337bb103ee526de663e9d;hp=a87cd301f3231995bc2903186868e661eb062a1d;hpb=bcbda1a1adef0a7848e87601a5dbf1741a63d1cb;p=jFCPlib.git
diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/ClientHelloImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/ClientHelloImpl.java
index a87cd30..3ded685 100644
--- a/src/main/java/net/pterodactylus/fcp/quelaton/ClientHelloImpl.java
+++ b/src/main/java/net/pterodactylus/fcp/quelaton/ClientHelloImpl.java
@@ -3,11 +3,9 @@ package net.pterodactylus.fcp.quelaton;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import net.pterodactylus.fcp.ClientHello;
-import net.pterodactylus.fcp.CloseConnectionDuplicateClientName;
import net.pterodactylus.fcp.FcpConnection;
import net.pterodactylus.fcp.NodeHello;
@@ -16,7 +14,7 @@ import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
/**
- * Internal ClientHello
implementation based on {@link FcpReplySequence}.
+ * Internal ClientHello
implementation based on {@link FcpDialog}.
*
* @author David âBombeâ Roden
*/
@@ -39,48 +37,46 @@ public class ClientHelloImpl {
}
private ListenableFuture execute() {
- return threadPool.submit(() -> establishConnection());
+ return threadPool.submit(this::establishConnection);
}
private FcpConnection establishConnection() throws IOException {
FcpConnection connection = new FcpConnection(hostname, port);
connection.connect();
- FcpReplySequence> nodeHelloSequence = new ClientHelloReplySequence(connection);
ClientHello clientHello = new ClientHello(clientName.get(), "2.0");
- try {
- nodeHelloSequence.send(clientHello).get();
+ try (ClientHelloDialog nodeHelloSequence = new ClientHelloDialog(connection)) {
+ if (nodeHelloSequence.send(clientHello).get()) {
+ return connection;
+ }
} catch (InterruptedException | ExecutionException e) {
connection.close();
throw new IOException(String.format("Could not connect to %s:%d.", hostname, port), e);
}
- return connection;
+ connection.close();
+ throw new IOException(String.format("Could not connect to %s:%d.", hostname, port));
}
- private class ClientHelloReplySequence extends FcpReplySequence {
+ private class ClientHelloDialog extends FcpDialog {
- private final AtomicReference receivedNodeHello;
- private final AtomicBoolean receivedClosed;
+ private final AtomicReference receivedNodeHello = new AtomicReference<>();
- public ClientHelloReplySequence(FcpConnection connection) {
+ public ClientHelloDialog(FcpConnection connection) {
super(ClientHelloImpl.this.threadPool, connection);
- receivedNodeHello = new AtomicReference<>();
- receivedClosed = new AtomicBoolean();
}
@Override
protected boolean isFinished() {
- return receivedNodeHello.get() != null || receivedClosed.get();
+ return receivedNodeHello.get() != null;
}
@Override
- protected void consumeNodeHello(NodeHello nodeHello) {
- receivedNodeHello.set(nodeHello);
+ protected Boolean getResult() {
+ return receivedNodeHello.get() != null;
}
@Override
- protected void consumeCloseConnectionDuplicateClientName(
- CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) {
- receivedClosed.set(true);
+ protected void consumeNodeHello(NodeHello nodeHello) {
+ receivedNodeHello.set(nodeHello);
}
}