X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FRequestManager.java;h=df7028f2f1843f2891ae429538f66e57f9cd6a19;hb=a70826c63fc16069cc7ea11c3957e221e79545c4;hp=cc381cf355cba52133bb7cddaf90ac7c0f21bbb2;hpb=c4ecc65b0832a2edce1a043db39a7c678e218af9;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/RequestManager.java b/src/net/pterodactylus/jsite/core/RequestManager.java index cc381cf..df7028f 100644 --- a/src/net/pterodactylus/jsite/core/RequestManager.java +++ b/src/net/pterodactylus/jsite/core/RequestManager.java @@ -23,13 +23,13 @@ import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import net.pterodactylus.fcp.highlevel.FcpClient; import net.pterodactylus.fcp.highlevel.FcpException; -import net.pterodactylus.fcp.highlevel.Request; import net.pterodactylus.jsite.util.IdGenerator; import net.pterodactylus.util.number.Hex; @@ -43,6 +43,9 @@ public class RequestManager implements NodeListener { /** The logger. */ private static final Logger logger = Logger.getLogger(RequestManager.class.getName()); + /** Request event manager. */ + private final RequestListenerManager requestListenerManager = new RequestListenerManager(); + /** The node manager. */ private final NodeManager nodeManager; @@ -60,6 +63,32 @@ public class RequestManager implements NodeListener { } // + // LISTENER MANAGEMENT + // + + /** + * Adds the given request listener to the list of registered listeners. + * + * @see RequestListenerManager#addListener(RequestListener) + * @param requestListener + * The request listener to add + */ + public void addRequestListener(RequestListener requestListener) { + requestListenerManager.addListener(requestListener); + } + + /** + * Removes the given request listener from the list of registered listeners. + * + * @see RequestListenerManager#removeListener(RequestListener) + * @param requestListener + * The request listener to remove + */ + public void removeRequestListener(RequestListener requestListener) { + requestListenerManager.removeListener(requestListener); + } + + // // ACTIONS // @@ -99,6 +128,23 @@ public class RequestManager implements NodeListener { return true; } + /** + * Wraps the requests of the FCP API into jSite requests. + * + * @param requests + * The requests to wrap + * @return The wrapped requests + */ + private Collection wrapRequests(Collection requests) { + Collection wrappedRequests = new HashSet(); + for (net.pterodactylus.fcp.highlevel.Request request : requests) { + Request wrappedRequest = new Request(request.getIdentifier()); + wrappedRequest.setClientToken(request.getClientToken()); + wrappedRequests.add(wrappedRequest); + } + return wrappedRequests; + } + // // INTERFACE NodeListener // @@ -120,7 +166,7 @@ public class RequestManager implements NodeListener { return; } try { - Collection requests = fcpClient.getRequests(true); + Collection requests = wrapRequests(fcpClient.getRequests(true)); for (Request request : requests) { String clientToken = request.getClientToken(); if ((clientToken == null) || (clientToken.trim().length() == 0)) {