X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Ffcp%2Fhighlevel%2FHighLevelClient.java;h=a09b289b51251602c2cf93fb74522552fc3d868f;hb=c1710356b299b5d3eebd019e69e370ac6f7b81b5;hp=1521703f8b5336cec3cad5ef787d992789c4e064;hpb=eb23f17afdd9f12dd4a93388a01fb442d1efef26;p=jFCPlib.git diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java b/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java index 1521703..a09b289 100644 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java +++ b/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java @@ -120,6 +120,9 @@ public class HighLevelClient { /** The listener for the connection. */ private HighLevelClientFcpListener highLevelClientFcpListener = new HighLevelClientFcpListener(); + /** The listeners for progress events. */ + private List highLevelProgressListeners = Collections.synchronizedList(new ArrayList()); + /** The callback for {@link #connect()}. */ private HighLevelCallback connectCallback; @@ -249,6 +252,41 @@ public class HighLevelClient { } } + /** + * Adds a high-level progress listener. + * + * @param highLevelProgressListener + * The high-level progress listener to add + */ + public void addHighLevelProgressListener(HighLevelProgressListener highLevelProgressListener) { + highLevelProgressListeners.add(highLevelProgressListener); + } + + /** + * Removes a high-level progress listener. + * + * @param highLevelProgressListener + * The high-level progress listener to remove + */ + public void removeHighLevelProgressListener(HighLevelProgressListener highLevelProgressListener) { + highLevelProgressListeners.remove(highLevelProgressListener); + } + + /** + * Notifies all listeners that the request with the given identifier made + * some progress. + * + * @param identifier + * The identifier of the request + * @param highLevelProgress + * The progress of the request + */ + private void fireProgressReceived(String identifier, HighLevelProgress highLevelProgress) { + for (HighLevelProgressListener highLevelProgressListener: highLevelProgressListeners) { + highLevelProgressListener.progressReceived(identifier, highLevelProgress); + } + } + // // ACCESSORS // @@ -1035,8 +1073,8 @@ public class HighLevelClient { downloadCallback.progressUpdated(); return; } - /* unknown identifier? */ - logger.warning("unknown identifier for SimpleProgress: " + identifier); + HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, simpleProgress.getTotal(), simpleProgress.getRequired(), simpleProgress.getSucceeded(), simpleProgress.getFailed(), simpleProgress.getFatallyFailed(), simpleProgress.isFinalizedTotal()); + fireProgressReceived(identifier, highLevelProgress); } /**