X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Ffcp%2Fquelaton%2FClientPutDiskDirCommandImpl.java;h=d223da278d36da7853c264b366abb2102b816623;hb=6090cca7d3eedfc2c8e41c8ff162f4705519705c;hp=2cf10c723d861d25f78fd5e6a8b7268250756969;hpb=002ccd34749862f5e43376d8c8518f4dc0c3f0bc;p=jFCPlib.git diff --git a/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutDiskDirCommandImpl.java b/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutDiskDirCommandImpl.java index 2cf10c7..d223da2 100644 --- a/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutDiskDirCommandImpl.java +++ b/src/main/java/net/pterodactylus/fcp/quelaton/ClientPutDiskDirCommandImpl.java @@ -18,6 +18,7 @@ import net.pterodactylus.fcp.ProtocolError; import net.pterodactylus.fcp.PutSuccessful; import net.pterodactylus.fcp.RequestProgress; import net.pterodactylus.fcp.SimpleProgress; +import net.pterodactylus.fcp.URIGenerated; import net.pterodactylus.fcp.Verbosity; import com.google.common.util.concurrent.ListeningExecutorService; @@ -36,6 +37,7 @@ public class ClientPutDiskDirCommandImpl implements ClientPutDiskDirCommand { private final AtomicReference directory = new AtomicReference<>(); private final AtomicReference uri = new AtomicReference<>(); private final List> requestProgressConsumers = new CopyOnWriteArrayList<>(); + private final List> keyGeneratedConsumers = new CopyOnWriteArrayList<>(); public ClientPutDiskDirCommandImpl(ExecutorService threadPool, ConnectionSupplier connectionSupplier, Supplier identifierGenerator) { this.threadPool = MoreExecutors.listeningDecorator(threadPool); @@ -50,6 +52,12 @@ public class ClientPutDiskDirCommandImpl implements ClientPutDiskDirCommand { } @Override + public ClientPutDiskDirCommand onKeyGenerated(Consumer keyGenerated) { + keyGeneratedConsumers.add(Objects.requireNonNull(keyGenerated)); + return this; + } + + @Override public WithUri fromDirectory(File directory) { this.directory.set(Objects.requireNonNull(directory).getPath()); return this::uri; @@ -97,6 +105,11 @@ public class ClientPutDiskDirCommandImpl implements ClientPutDiskDirCommand { } @Override + protected void consumeURIGenerated(URIGenerated uriGenerated) { + keyGeneratedConsumers.forEach(consumer -> consumer.accept(uriGenerated.getURI())); + } + + @Override protected void consumeProtocolError(ProtocolError protocolError) { finish(); }