X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FFreenetInterface.java;h=4ee3926c06e408908c75b037ab9fd8676edbfd60;hb=f1032a3361ff1b4a43d94a84169e9fcafae4afff;hp=7cb8a9aaec137075f3bd89cfefb7614c19bebbc3;hpb=d525d4ad65878cfd895945512650d978f6a5c034;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/FreenetInterface.java b/src/main/java/net/pterodactylus/sone/core/FreenetInterface.java index 7cb8a9a..4ee3926 100644 --- a/src/main/java/net/pterodactylus/sone/core/FreenetInterface.java +++ b/src/main/java/net/pterodactylus/sone/core/FreenetInterface.java @@ -87,6 +87,18 @@ public class FreenetInterface { /** The not-Sone-related USK callbacks. */ private final Map uriUskCallbacks = Collections.synchronizedMap(new HashMap()); + private final RequestClient imageInserts = new RequestClient() { + @Override + public boolean persistent() { + return false; + } + + @Override + public boolean realTimeFlag() { + return true; + } + }; + /** * Creates a new Freenet interface. * @@ -161,6 +173,7 @@ public class FreenetInterface { FreenetURI targetUri = key.getInsertURI().setDocName(filenameHint); InsertContext insertContext = client.getInsertContext(true); RandomAccessBucket bucket = new ArrayBucket(temporaryImage.getImageData()); + insertToken.setBucket(bucket); ClientMetadata metadata = new ClientMetadata(temporaryImage.getMimeType()); InsertBlock insertBlock = new InsertBlock(bucket, metadata, targetUri); try { @@ -404,6 +417,7 @@ public class FreenetInterface { /** The client putter. */ private ClientPutter clientPutter; + private Bucket bucket; /** The final URI. */ private volatile FreenetURI resultingUri; @@ -435,6 +449,10 @@ public class FreenetInterface { eventBus.post(new ImageInsertStartedEvent(image)); } + public void setBucket(Bucket bucket) { + this.bucket = bucket; + } + // // ACTIONS // @@ -454,7 +472,7 @@ public class FreenetInterface { @Override public RequestClient getRequestClient() { - return clientPutter.getClient(); + return imageInserts; } @Override @@ -473,6 +491,7 @@ public class FreenetInterface { } else { eventBus.post(new ImageInsertFailedEvent(image, insertException)); } + bucket.free(); } /** @@ -506,6 +525,7 @@ public class FreenetInterface { @SuppressWarnings("synthetic-access") public void onSuccess(BaseClientPutter clientPutter) { eventBus.post(new ImageInsertFinishedEvent(image, resultingUri)); + bucket.free(); } }