X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FFcpDialog.java;fp=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FFcpDialog.java;h=5b030bdab7284632171a9a9dbb3dcfa51b43e69c;hb=c7b30c245806a4a67d2e924d6d4e2a9e97916c5b;hp=f218610bf33cb52bbd020675520a655ff4ecb7b4;hpb=7a3be5ca037785f4f1acb225381578db12d15eb1;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/FcpDialog.java b/src/main/java/net/pterodactylus/fcp/quelaton/FcpDialog.java index f218610..5b030bd 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/FcpDialog.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/FcpDialog.java @@ -72,17 +72,31 @@ public abstract class FcpDialog implements AutoCloseable, FcpListener { private final AtomicReference identifier = new AtomicReference<>(); private final AtomicBoolean connectionClosed = new AtomicBoolean(); private final AtomicReference connectionFailureReason = new AtomicReference<>(); + private final AtomicBoolean finished = new AtomicBoolean(); + private final AtomicReference result = new AtomicReference<>(); - public FcpDialog(ExecutorService executorService, FcpConnection fcpConnection) { + public FcpDialog(ExecutorService executorService, FcpConnection fcpConnection, R initialResult) { this.executorService = MoreExecutors.listeningDecorator(executorService); this.fcpConnection = fcpConnection; + result.set(initialResult); } protected void setIdentifier(String identifier) { this.identifier.set(identifier); } - protected abstract boolean isFinished(); + public final boolean isFinished() { + return finished.get(); + } + + protected final void finish() { + finished.set(true); + } + + protected final void setResult(R result) { + this.result.set(result); + finish(); + } public ListenableFuture send(FcpMessage fcpMessage) throws IOException { setIdentifier(fcpMessage.getField("Identifier")); @@ -120,8 +134,8 @@ public abstract class FcpDialog implements AutoCloseable, FcpListener { } } - protected R getResult() { - return null; + protected final R getResult() { + return result.get(); } @Override