remove requests from table when node disconnects
[jSite2.git] / src / net / pterodactylus / jsite / core / RequestManager.java
index 618dbf1..4efd9d9 100644 (file)
@@ -109,7 +109,17 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                }
        }
 
-       // TODO - fireRequestRemoved
+       /**
+        * Notifies all listeners that a request was removed.
+        * 
+        * @param request
+        *            The request that was removed
+        */
+       private void fireRequestRemoved(Request request) {
+               for (RequestListener requestListener: requestListeners) {
+                       requestListener.requestRemoved(request);
+               }
+       }
 
        //
        // ACCESSORS
@@ -228,11 +238,15 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
         * {@inheritDoc}
         */
        public void nodeDisconnected(Node node, Throwable throwable) {
-               HighLevelClient highLevelClient = nodeManager.getHighLevelClient(node);
-               if (highLevelClient == null) {
-                       logger.warning("got nodeDisconnected from node without high-level client: " + node);
+               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();
        }
 
        //