X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FRequestManager.java;h=618dbf1968f40c5fdfe6554abdc3902d52920b2b;hb=a6d31fa9f170c57ba80b0f5ede4ef9bcbe3c9375;hp=002cd17748ecbf4f5ac60d56054148786daf59d8;hpb=d9babeba262240417325c00535e4c91c24520f2c;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/RequestManager.java b/src/net/pterodactylus/jsite/core/RequestManager.java index 002cd17..618dbf1 100644 --- a/src/net/pterodactylus/jsite/core/RequestManager.java +++ b/src/net/pterodactylus/jsite/core/RequestManager.java @@ -25,7 +25,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -60,7 +59,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** Request lists for all nodes. */ @SuppressWarnings("unused") - private Map> nodeRequests = Collections.synchronizedMap(new HashMap>()); + private Map> nodeRequests = Collections.synchronizedMap(new HashMap>()); // // EVENT MANAGEMENT @@ -89,44 +88,29 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Notifies all listeners that a request was added. * - * @param node - * The node that added the request * @param request * The request that was added */ - private void fireRequestAdded(Node node, Request request) { + private void fireRequestAdded(Request request) { for (RequestListener requestListener: requestListeners) { - requestListener.requestAdded(node, request); + requestListener.requestAdded(request); } } /** * Notifies all listeners that a request progressed. * - * @param node - * The node that runs the request * @param request * The request - * @param totalBlocks - * The total number of blocks - * @param requiredBlocks - * The number of required blocks - * @param successfulBlocks - * The number of successful blocks - * @param failedBlocks - * The number of failed blocks - * @param fatallyFailedBlocks - * The number of fatally failed blocks - * @param finalizedTotal - * true if the total number of blocks in final, - * false otherwise */ - private void fireRequestProgressed(Node node, Request request, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) { + private void fireRequestProgressed(Request request) { for (RequestListener requestListener: requestListeners) { - requestListener.requestProgressed(node, request, totalBlocks, requiredBlocks, successfulBlocks, failedBlocks, fatallyFailedBlocks, finalizedTotal); + requestListener.requestProgressed(request); } } + // TODO - fireRequestRemoved + // // ACCESSORS // @@ -164,6 +148,8 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { logger.log(Level.WARNING, "no client for node: " + node); return; } + final Map identifierRequests = new HashMap(); + nodeRequests.put(node, identifierRequests); HighLevelCallback requestListCallback = highLevelClient.getRequests(); requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener() { @@ -177,9 +163,10 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { return; } for (RequestResult requestResult: requestListResult) { - Request request = new Request(requestResult.getIdentifier()); + Request request = new Request(node, requestResult.getIdentifier()); + identifierRequests.put(requestResult.getIdentifier(), request); /* TODO - fill request */ - fireRequestAdded(node, request); + fireRequestAdded(request); } } }); @@ -253,11 +240,32 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { // /** - * @see net.pterodactylus.fcp.highlevel.HighLevelProgressListener#progressReceived(java.lang.String, - * net.pterodactylus.fcp.highlevel.HighLevelProgress) + * @see net.pterodactylus.fcp.highlevel.HighLevelProgressListener#progressReceived(HighLevelClient, + * String, HighLevelProgress) */ - public void progressReceived(String identifier, HighLevelProgress highLevelProgress) { - fireRequestProgressed(null, new Request(identifier), highLevelProgress.getTotalBlocks(), highLevelProgress.getRequiredBlocks(), highLevelProgress.getSuccessfulBlocks(), highLevelProgress.getFailedBlocks(), highLevelProgress.getFatallyFailedBlocks(), highLevelProgress.isTotalFinalized()); + 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 identifierRequests = nodeRequests.get(node); + if (identifierRequests == null) { + logger.warning("got node without request map: " + node); + return; + } + Request request = identifierRequests.get(identifier); + if (request == null) { + logger.warning("got progress for unknown request: " + identifier); + return; + } + 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); } }