+ Map<String, Request> identifierRequests = nodeRequests.get(node);
+ if (identifierRequests == null) {
+ logger.warning("got node without request map: " + node);
+ return;
+ }
+ for (Request request: identifierRequests.values()) {
+ fireRequestRemoved(request);
+ }
+ identifierRequests.clear();
+ }
+
+ //
+ // INTERFACE HighLevelProgressListener
+ //
+
+ /**
+ * @see net.pterodactylus.fcp.highlevel.HighLevelProgressListener#progressReceived(HighLevelClient,
+ * String, HighLevelProgress)
+ */
+ public void progressReceived(HighLevelClient highLevelClient, String identifier, HighLevelProgress highLevelProgress) {
+ Node node = nodeManager.getNode(highLevelClient);
+ if (node == null) {
+ logger.warning("got high-level client without node: " + highLevelClient);
+ return;
+ }
+ Map<String, Request> identifierRequests = nodeRequests.get(node);
+ if (identifierRequests == null) {
+ logger.warning("got node without request map: " + node);
+ identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
+ nodeRequests.put(node, identifierRequests);
+ }
+ Request request = identifierRequests.get(identifier);
+ if (request == null) {
+ logger.warning("got progress for unknown request: " + identifier);
+ request = new Request(node, identifier);
+ identifierRequests.put(identifier, request);
+ fireRequestAdded(request);
+ }
+ if (highLevelProgress.isFinished()) {
+ request.setFinished(true);
+ request.setSuccessful(!highLevelProgress.isFailed());
+ fireRequestFinished(request);
+ } else if (highLevelProgress.isFetchable()) {
+ /* TODO - ignore? */
+ } else if (highLevelProgress.getURI() != null) {
+ request.setURI(highLevelProgress.getURI());
+ fireRequestGeneratedURI(request, highLevelProgress.getURI());
+ } else {
+ request.setTotalBlocks(highLevelProgress.getTotalBlocks());
+ request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
+ request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());
+ request.setFailedBlocks(highLevelProgress.getFailedBlocks());
+ request.setFatallyFailedBlocks(highLevelProgress.getFatallyFailedBlocks());
+ request.setTotalFinalized(highLevelProgress.isTotalFinalized());
+ fireRequestProgressed(request);
+ }