X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FNodeManager.java;h=7fd4cc97db2e70f0768c7010ec9d398cbc2b21ef;hb=e11ac9227c1950ac28ea560800eadffeb8c883be;hp=6842459ed139682b577653e24f112f9803d4a884;hpb=3ac9fa8a9f7c247c77a859a1d68ad431ca7607ed;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/NodeManager.java b/src/net/pterodactylus/jsite/core/NodeManager.java index 6842459..7fd4cc9 100644 --- a/src/net/pterodactylus/jsite/core/NodeManager.java +++ b/src/net/pterodactylus/jsite/core/NodeManager.java @@ -67,7 +67,7 @@ public class NodeManager implements Iterable, PropertyChangeListener { private final Object syncObject = new Object(); /** Node listener support. */ - private final NodeListenerSupport nodeListenerSupport = new NodeListenerSupport(); + private final NodeListenerSupport nodeListenerManager = new NodeListenerSupport(); /** All nodes. */ private final List nodes = Collections.synchronizedList(new ArrayList()); @@ -105,7 +105,7 @@ public class NodeManager implements Iterable, PropertyChangeListener { * The listener to add */ public void addNodeListener(NodeListener nodeListener) { - nodeListenerSupport.addListener(nodeListener); + nodeListenerManager.addListener(nodeListener); } /** @@ -115,7 +115,7 @@ public class NodeManager implements Iterable, PropertyChangeListener { * The listener to remove */ public void removeNodeListener(NodeListener nodeListener) { - nodeListenerSupport.removeListener(nodeListener); + nodeListenerManager.removeListener(nodeListener); } // @@ -285,7 +285,7 @@ public class NodeManager implements Iterable, PropertyChangeListener { node.addPropertyChangeListener(this); nodes.add(node); idNodes.put(node.getId(), node); - nodeListenerSupport.fireNodeAdded(node); + nodeListenerManager.fireNodeAdded(node); return true; } @@ -305,7 +305,7 @@ public class NodeManager implements Iterable, PropertyChangeListener { nodes.remove(node); idNodes.remove(node.getId()); node.removePropertyChangeListener(this); - nodeListenerSupport.fireNodeRemoved(node); + nodeListenerManager.fireNodeRemoved(node); } } @@ -324,12 +324,14 @@ public class NodeManager implements Iterable, PropertyChangeListener { try { FcpClient fcpClient = new FcpClient(clientName, node.getHostname(), node.getPort()); fcpClient.connect(); + nodeClients.put(node, fcpClient); + nodeListenerManager.fireNodeConnected(node); } catch (UnknownHostException uhe1) { - nodeListenerSupport.fireNodeConnectionFailed(node, uhe1); + nodeListenerManager.fireNodeConnectionFailed(node, uhe1); } catch (IOException ioe1) { - nodeListenerSupport.fireNodeConnectionFailed(node, ioe1); + nodeListenerManager.fireNodeConnectionFailed(node, ioe1); } catch (FcpException fe1) { - nodeListenerSupport.fireNodeConnectionFailed(node, fe1); + nodeListenerManager.fireNodeConnectionFailed(node, fe1); } } @@ -341,6 +343,17 @@ public class NodeManager implements Iterable, PropertyChangeListener { */ public void disconnect(Node node) { logger.log(Level.FINEST, "disconnect(node=" + node + ")"); + if (!nodes.contains(node)) { + logger.log(Level.WARNING, "Was told to disconnect from a node (" + node + ") I don’t know about!"); + return; + } + FcpClient fcpClient = nodeClients.get(node); + if (fcpClient == null) { + logger.log(Level.WARNING, "No FCP client for node (" + node + ")!"); + return; + } + fcpClient.disconnect(); + nodeListenerManager.fireNodeDisconnected(node, null); } /**