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=e3a215a8f3fa483d23b1c6ab661db1bee2a3926d;hpb=cdb237882793284e0f1a30d5c3376f58fae2f6b7;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 e3a215a..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 { @@ -168,8 +181,6 @@ public class FreenetInterface { insertToken.setClientPutter(clientPutter); } catch (InsertException ie1) { throw new SoneInsertException("Could not start image insert.", ie1); - } finally { - bucket.free(); } } @@ -406,6 +417,7 @@ public class FreenetInterface { /** The client putter. */ private ClientPutter clientPutter; + private Bucket bucket; /** The final URI. */ private volatile FreenetURI resultingUri; @@ -437,6 +449,10 @@ public class FreenetInterface { eventBus.post(new ImageInsertStartedEvent(image)); } + public void setBucket(Bucket bucket) { + this.bucket = bucket; + } + // // ACTIONS // @@ -456,7 +472,7 @@ public class FreenetInterface { @Override public RequestClient getRequestClient() { - return clientPutter.getClient(); + return imageInserts; } @Override @@ -475,6 +491,7 @@ public class FreenetInterface { } else { eventBus.post(new ImageInsertFailedEvent(image, insertException)); } + bucket.free(); } /** @@ -508,6 +525,7 @@ public class FreenetInterface { @SuppressWarnings("synthetic-access") public void onSuccess(BaseClientPutter clientPutter) { eventBus.post(new ImageInsertFinishedEvent(image, resultingUri)); + bucket.free(); } }