X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FClientGetCommandImpl.java;h=7908f5c4b4e3ca052ec654a313efbe6b9893e77d;hb=c7b30c245806a4a67d2e924d6d4e2a9e97916c5b;hp=d01b82e2a1fc79e6b3a03429df40da2bc27caa42;hpb=7a3be5ca037785f4f1acb225381578db12d15eb1;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/ClientGetCommandImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/ClientGetCommandImpl.java index d01b82e..7908f5c 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/ClientGetCommandImpl.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/ClientGetCommandImpl.java @@ -5,7 +5,6 @@ import java.io.InputStream; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; import net.pterodactylus.fcp.AllData; @@ -116,25 +115,27 @@ class ClientGetCommandImpl implements ClientGetCommand { private class ClientGetDialog extends FcpDialog> { - private final AtomicBoolean finished = new AtomicBoolean(); - private final AtomicBoolean failed = new AtomicBoolean(); - - private String contentType; - private long dataLength; - private InputStream payload; - public ClientGetDialog() throws IOException { - super(ClientGetCommandImpl.this.threadPool, ClientGetCommandImpl.this.connectionSupplier.get()); + super(ClientGetCommandImpl.this.threadPool, ClientGetCommandImpl.this.connectionSupplier.get(), Optional.empty()); } @Override - protected boolean isFinished() { - return finished.get() || failed.get(); + protected void consumeAllData(AllData allData) { + synchronized (this) { + String contentType = allData.getContentType(); + long dataLength = allData.getDataLength(); + try { + InputStream payload = new TempInputStream(allData.getPayloadInputStream(), dataLength); + setResult(Optional.of(createData(contentType, dataLength, payload))); + } catch (IOException e) { + // TODO – logging + finish(); + } + } } - @Override - protected Optional getResult() { - return failed.get() ? Optional.empty() : Optional.of(new Data() { + private Data createData(String contentType, long dataLength, InputStream payload) { + return new Data() { @Override public String getMimeType() { return contentType; @@ -149,27 +150,12 @@ class ClientGetCommandImpl implements ClientGetCommand { public InputStream getInputStream() { return payload; } - }); - } - - @Override - protected void consumeAllData(AllData allData) { - synchronized (this) { - contentType = allData.getContentType(); - dataLength = allData.getDataLength(); - try { - payload = new TempInputStream(allData.getPayloadInputStream(), dataLength); - finished.set(true); - } catch (IOException e) { - // TODO – logging - failed.set(true); - } - } + }; } @Override protected void consumeGetFailed(GetFailed getFailed) { - failed.set(true); + finish(); } }