X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FClientPutCommandImpl.java;h=df345f349fc491381f55cb81164e3ee2f6f7574d;hb=3e3e6edfb7e526a93bd27d32786835993f348cd5;hp=8a2ebfeac794f22ab1e84f29fae256f447d538c1;hpb=7c28553f5be04a7db175af2612df65afe54d29ce;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutCommandImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutCommandImpl.java index 8a2ebfe..df345f3 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutCommandImpl.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutCommandImpl.java @@ -6,6 +6,7 @@ import java.io.InputStream; import java.nio.file.Files; import java.util.Objects; import java.util.Optional; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; @@ -54,32 +55,38 @@ class ClientPutCommandImpl implements ClientPutCommand { } @Override - public WithUri> redirectTo(String uri) { + public WithUri>> redirectTo(String uri) { this.redirectUri.set(Objects.requireNonNull(uri, "uri must not be null")); return this::key; } @Override - public WithUri> from(File file) { + public WithUri>> from(File file) { this.file.set(Objects.requireNonNull(file, "file must not be null")); return this::key; } @Override - public WithLength>> from(InputStream inputStream) { + public WithLength>>> from(InputStream inputStream) { payload.set(Objects.requireNonNull(inputStream, "inputStream must not be null")); return this::length; } - private WithUri> length(long length) { + private WithUri>> length(long length) { this.length.set(length); return this::key; } - private ListenableFuture> key(String uri) { + private Executable> key(String uri) { + return () -> threadPool.submit(() -> execute(uri)); + } + + private Optional execute(String uri) throws InterruptedException, ExecutionException, IOException { String identifier = new RandomIdentifierGenerator().generate(); ClientPut clientPut = createClientPutCommand(uri, identifier); - return threadPool.submit(() -> new ClientPutReplySequence().send(clientPut).get()); + try (ClientPutReplySequence clientPutReplySequence = new ClientPutReplySequence()) { + return clientPutReplySequence.send(clientPut).get(); + } } private ClientPut createClientPutCommand(String uri, String identifier) { @@ -184,11 +191,6 @@ class ClientPutCommandImpl implements ClientPutCommand { sendMessage(originalClientPut.get()); } - @Override - protected void consumeConnectionClosed(Throwable throwable) { - putFinished.set(true); - } - } }