X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FGetNodeCommandImpl.java;h=025cddca152d4cfdd9f192139bbc46960a398670;hb=ebede056b159ea34d294f3fac0e2def790454a48;hp=3c260ab2a7e01d156685fc0b2967287e766d08ba;hpb=d558b6c8d41b6b25adf49eadda1dae32af2c5933;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/GetNodeCommandImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/GetNodeCommandImpl.java index 3c260ab..025cddc 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/GetNodeCommandImpl.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/GetNodeCommandImpl.java @@ -1,6 +1,7 @@ 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; @@ -13,7 +14,7 @@ import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; /** - * Default {@link GetNodeCommandImpl} implementation based on {@link FcpReplySequence}. + * Default {@link GetNodeCommandImpl} implementation based on {@link FcpDialog}. * * @author David ‘Bombe’ Roden */ @@ -22,6 +23,8 @@ public class GetNodeCommandImpl implements GetNodeCommand { private final ListeningExecutorService threadPool; private final ConnectionSupplier connectionSupplier; private final AtomicBoolean giveOpennetRef = new AtomicBoolean(false); + private final AtomicBoolean includePrivate = new AtomicBoolean(false); + private final AtomicBoolean includeVolatile = new AtomicBoolean(false); public GetNodeCommandImpl(ExecutorService threadPool, ConnectionSupplier connectionSupplier) { this.threadPool = MoreExecutors.listeningDecorator(threadPool); @@ -35,16 +38,35 @@ public class GetNodeCommandImpl implements GetNodeCommand { } @Override + public GetNodeCommand includePrivate() { + includePrivate.set(true); + return this; + } + + @Override + public GetNodeCommand includeVolatile() { + includeVolatile.set(true); + return this; + } + + @Override public ListenableFuture execute() { - GetNode getNode = new GetNode(new RandomIdentifierGenerator().generate(), giveOpennetRef.get(), false, false); - return threadPool.submit(() -> new GetNodeReplySequence().send(getNode).get()); + return threadPool.submit(this::executeSequence); + } + + private NodeData executeSequence() throws InterruptedException, ExecutionException, IOException { + GetNode getNode = new GetNode(new RandomIdentifierGenerator().generate(), giveOpennetRef.get(), + includePrivate.get(), includeVolatile.get()); + try (GetNodeDialog getNodeDialog = new GetNodeDialog()) { + return getNodeDialog.send(getNode).get(); + } } - private class GetNodeReplySequence extends FcpReplySequence { + private class GetNodeDialog extends FcpDialog { private final AtomicReference nodeData = new AtomicReference<>(); - public GetNodeReplySequence() throws IOException { + public GetNodeDialog() throws IOException { super(threadPool, connectionSupplier.get()); }