X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Ffcp%2Fhighlevel%2FHighLevelProgress.java;h=403ac30cc523103ef665008bc24d32dc3f05141c;hb=7b73e6e23b03d9412e9dcc0ff3b4f681baa301c5;hp=675b950ae8f310978ffec96933a153406a873530;hpb=72fa147608d530a273c8165d2036e6fc1b8511a1;p=jFCPlib.git diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java b/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java index 675b950..403ac30 100644 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java +++ b/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java @@ -21,12 +21,31 @@ package net.pterodactylus.fcp.highlevel; /** * Result for operations that send progress messages until they have completed. + * The fields of the progress message has to be checked in given order because + * if you receive this progress asynchronously via a + * {@link HighLevelProgressListener} the progress will not have any state, you + * will simply get the latest results, with other fields unset. First you should + * check whether {@link #isFinished()} returns true. If it does, + * the request is finished and {@link #isFailed()} will tell you whether the + * request has failed or succeeded. Other fields are not set. If the request is + * not yet finished, {@link #isFetchable()} will tell you whether the request + * has progressed to a state that allows other clients to fetch the inserted + * data. This is of course only valid for Put and PutDir requests. If none of + * those methods return true, you can use the block count + * methods to get detailed progress statistics. When progress you received is a + * {@link DownloadResult} you do not need to check * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ */ public class HighLevelProgress extends HighLevelResult { + /** Whether the request is finished. */ + private boolean finished; + + /** Whether a Put request should be fetchable now. */ + private boolean fetchable; + /** The number of total blocks. */ private int totalBlocks; @@ -56,6 +75,21 @@ public class HighLevelProgress extends HighLevelResult { } /** + * Creates a new high-level progress for a request that is finished. + * + * @param identifier + * The identifier of the request + * @param successful + * true if the request finished successfully, + * false otherwise + */ + public HighLevelProgress(String identifier, boolean successful) { + this(identifier); + finished = true; + setFailed(!successful); + } + + /** * Creates a new high-level progress with the given values. * * @param identifier @@ -85,6 +119,51 @@ public class HighLevelProgress extends HighLevelResult { } /** + * Returns whether this progress means that a request has finished. Use + * {@link #isFailed()} to check if the request failed. + * + * @see #isFailed() + * @return true if the request has finished + */ + public boolean isFinished() { + return finished; + } + + /** + * Sets whether the request described by this progress has finished. + * + * @param finished + * true if the request has finished, + * false otherwise + */ + void setFinished(boolean finished) { + this.finished = finished; + } + + /** + * Returns whether the request should be fetchable now, in case it was a Put + * request. + * + * @return true if the request should be fetchable now, + * false otherwise + */ + public boolean isFetchable() { + return fetchable; + } + + /** + * Sets whether the request should be fetchable now, in case it was a Put + * request. + * + * @param fetchable + * true if the request should be fetchable now, + * false otherwise + */ + void setFetchable(boolean fetchable) { + this.fetchable = fetchable; + } + + /** * Returns the number of total blocks. * * @return The number of total blocks