Manage currently connected nodes.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 15 Nov 2008 01:48:41 +0000 (02:48 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 15 Nov 2008 01:48:41 +0000 (02:48 +0100)
src/net/pterodactylus/jsite/core/NodeManager.java

index 9cdc60d..957e1bc 100644 (file)
@@ -31,10 +31,12 @@ import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -147,6 +149,18 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
        }
 
        /**
+        * Returns whether the given node is currently connected.
+        *
+        * @param node
+        *            The node to check
+        * @return <code>true</code> if the node is currently connected,
+        *         <code>false</code> otherwise
+        */
+       public boolean isNodeConnected(Node node) {
+               return connectedNodes.contains(node);
+       }
+
+       /**
         * {@inheritDoc}
         */
        public Iterator<Node> iterator() {
@@ -438,6 +452,7 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
                        logger.log(Level.WARNING, "got event for unknown client");
                        return;
                }
+               connectedNodes.add(node);
                nodeListenerSupport.fireNodeConnected(node);
        }
 
@@ -452,6 +467,7 @@ public class NodeManager implements Iterable<Node>, PropertyChangeListener, High
                                logger.log(Level.WARNING, "got event for unknown client");
                                return;
                        }
+                       connectedNodes.remove(node);
                        nodeListenerSupport.fireNodeDisconnected(node, throwable);
                }
        }