X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FRequestManager.java;h=ac9d588b5526a44802187bfd52668073b0a7d4a9;hb=09fa8f788bc17540c5ee8910f927616da59ef44e;hp=b101bf7526bd4fcf740145e2b42a1e69d0a8491e;hpb=cf127faffabd3f07b0acc6de9ea746059d571b56;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/RequestManager.java b/src/net/pterodactylus/jsite/core/RequestManager.java index b101bf7..ac9d588 100644 --- a/src/net/pterodactylus/jsite/core/RequestManager.java +++ b/src/net/pterodactylus/jsite/core/RequestManager.java @@ -25,21 +25,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.logging.Level; import java.util.logging.Logger; -import net.pterodactylus.fcp.highlevel.GetRequestResult; -import net.pterodactylus.fcp.highlevel.HighLevelCallback; -import net.pterodactylus.fcp.highlevel.HighLevelCallbackListener; -import net.pterodactylus.fcp.highlevel.HighLevelClient; -import net.pterodactylus.fcp.highlevel.HighLevelException; -import net.pterodactylus.fcp.highlevel.HighLevelProgress; -import net.pterodactylus.fcp.highlevel.HighLevelProgressListener; -import net.pterodactylus.fcp.highlevel.PutDirRequestResult; -import net.pterodactylus.fcp.highlevel.PutRequestResult; -import net.pterodactylus.fcp.highlevel.RequestListResult; -import net.pterodactylus.fcp.highlevel.RequestResult; -import net.pterodactylus.jsite.core.Request.Type; import net.pterodactylus.util.logging.Logging; /** @@ -47,10 +34,10 @@ import net.pterodactylus.util.logging.Logging; * The request manager is added to the {@link NodeManager} as a * {@link NodeListener} so that it can fire request-removed events in case a * node is disconnected. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ -public class RequestManager implements NodeListener, HighLevelProgressListener { +public class RequestManager implements NodeListener { /** Logger. */ private static final Logger logger = Logging.getLogger(RequestManager.class.getName()); @@ -62,7 +49,6 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { private NodeManager nodeManager; /** Request lists for all nodes. */ - @SuppressWarnings("unused") private Map> nodeRequests = Collections.synchronizedMap(new HashMap>()); // @@ -71,7 +57,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Adds a request listener. - * + * * @param requestListener * The request listener to add */ @@ -81,7 +67,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Removes a request listener. - * + * * @param requestListener * The request listener to remove */ @@ -91,56 +77,56 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Notifies all listeners that a request was added. - * + * * @param request * The request that was added */ private void fireRequestAdded(Request request) { - for (RequestListener requestListener: requestListeners) { + for (RequestListener requestListener : requestListeners) { requestListener.requestAdded(request); } } /** * Notifies all listeners that a request progressed. - * + * * @param request * The request */ private void fireRequestProgressed(Request request) { - for (RequestListener requestListener: requestListeners) { + for (RequestListener requestListener : requestListeners) { requestListener.requestProgressed(request); } } /** * Notifies all listeners that a request was removed. - * + * * @param request * The request that was removed */ private void fireRequestRemoved(Request request) { - for (RequestListener requestListener: requestListeners) { + for (RequestListener requestListener : requestListeners) { requestListener.requestRemoved(request); } } /** * Notifies all listeners that a request has finished. - * + * * @see RequestListener#requestFinished(Request) * @param request * The request that has finished */ private void fireRequestFinished(Request request) { - for (RequestListener requestListener: requestListeners) { + for (RequestListener requestListener : requestListeners) { requestListener.requestFinished(request); } } /** * Notifies all listeners that a request has generated a URI. - * + * * @see RequestListener#requestGeneratedURI(Request, String) * @param request * The request that has generated a URI @@ -148,7 +134,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { * The generated URI */ private void fireRequestGeneratedURI(Request request, String uri) { - for (RequestListener requestListener: requestListeners) { + for (RequestListener requestListener : requestListeners) { requestListener.requestGeneratedURI(request, uri); } } @@ -159,7 +145,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Sets the node manager to use. - * + * * @param nodeManager * The node manager */ @@ -178,7 +164,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { /** * Requests a list of all running requests from a node. This method will * block until the request has been sent! - * + * * @param node * The node to get all requests for * @throws IOException @@ -187,54 +173,6 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { * if there is a problem with the node */ private void getRequests(final Node node) throws IOException, JSiteException { - HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node); - if (highLevelClient == null) { - logger.log(Level.WARNING, "no client for node: " + node); - return; - } - final Map identifierRequests = Collections.synchronizedMap(new HashMap()); - nodeRequests.put(node, identifierRequests); - HighLevelCallback requestListCallback; - try { - requestListCallback = highLevelClient.getRequests(); - requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener() { - - @SuppressWarnings("synthetic-access") - public void gotResult(HighLevelCallback highLevelCallback) { - RequestListResult requestListResult; - try { - requestListResult = highLevelCallback.getResult(); - } catch (InterruptedException e) { - logger.log(Level.SEVERE, "getResult() blocked and was interrupted"); - return; - } - for (RequestResult requestResult: requestListResult) { - String identifier = requestResult.getIdentifier(); - logger.log(Level.FINER, "got identifier: " + identifier); - Request request = identifierRequests.get(identifier); - if (request == null) { - request = new Request(node, identifier); - } - if (request.getType() == null) { - if (requestResult instanceof GetRequestResult) { - request.setType(Type.get); - } else if (requestResult instanceof PutRequestResult) { - request.setType(Type.put); - } else if (requestResult instanceof PutDirRequestResult) { - request.setType(Type.putDir); - } - } - if (identifierRequests.containsKey(identifier)) { - continue; - } - identifierRequests.put(requestResult.getIdentifier(), request); - fireRequestAdded(request); - } - } - }); - } catch (HighLevelException hle1) { - throw new BackendException(hle1); - } } // @@ -245,45 +183,18 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { * {@inheritDoc} */ public void nodeAdded(Node node) { - HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node); - if (highLevelClient == null) { - logger.warning("got nodeAdded but no high-level client: " + node); - return; - } - highLevelClient.addHighLevelProgressListener(this); } /** * {@inheritDoc} */ public void nodeRemoved(Node node) { - HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node); - if (highLevelClient == null) { - logger.warning("got nodeRemoved but no high-level client: " + node); - return; - } - highLevelClient.removeHighLevelProgressListener(this); } /** * {@inheritDoc} */ public void nodeConnected(Node node) { - HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node); - if (highLevelClient == null) { - logger.log(Level.WARNING, "got no high-level client for node " + node); - return; - } - try { - highLevelClient.setWatchGlobal(true); - getRequests(node); - } catch (HighLevelException hle1) { - logger.log(Level.WARNING, "error in backend", hle1); - } catch (JSiteException jse1) { - logger.log(Level.WARNING, "error in backend", jse1); - } catch (IOException e) { - /* ignore exception, disconnects are handled elsewhere. */ - } } /** @@ -302,57 +213,10 @@ public class RequestManager implements NodeListener, HighLevelProgressListener { logger.warning("got node without request map: " + node); return; } - for (Request request: identifierRequests.values()) { + 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 identifierRequests = nodeRequests.get(node); - if (identifierRequests == null) { - logger.warning("got node without request map: " + node); - identifierRequests = Collections.synchronizedMap(new HashMap()); - 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); - } - } - }