extend core listener
[jSite2.git] / src / net / pterodactylus / jsite / core / CoreImpl.java
index 8b79d3e..8fe64da 100644 (file)
@@ -29,7 +29,7 @@ import java.util.List;
  * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
  * @version $Id$
  */
-public class CoreImpl implements Core {
+public class CoreImpl implements Core, NodeListener {
 
        /** The core listeners. */
        private final List<CoreListener> coreListeners = new ArrayList<CoreListener>();
@@ -181,6 +181,46 @@ public class CoreImpl implements Core {
                }
        }
 
+       /**
+        * Notifies all listeners that a connection to the given node is now being
+        * established.
+        *
+        * @param node
+        *            The node that is being connected to
+        */
+       private void fireNodeConnecting(Node node) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.nodeConnecting(node);
+               }
+       }
+
+       /**
+        * Notifies all listeners that the given node is now connected.
+        *
+        * @param node
+        *            The node that is now connected
+        */
+       private void fireNodeConnected(Node node) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.nodeConnected(node);
+               }
+       }
+
+       /**
+        * Notifies all listeners that the given node was disconnected.
+        *
+        * @param node
+        *            The node that is now disconnected
+        * @param throwable
+        *            The exception that caused the disconnect, or <code>null</code>
+        *            if there was no exception
+        */
+       private void fireNodeDisconnected(Node node, Throwable throwable) {
+               for (CoreListener coreListener: coreListeners) {
+                       coreListener.nodeDisconnected(node, throwable);
+               }
+       }
+
        //
        // ACCESSORS
        //
@@ -283,7 +323,16 @@ public class CoreImpl implements Core {
         * {@inheritDoc}
         */
        public void connectToNode(Node node) {
-               /* TODO */
+               fireNodeConnecting(node);
+               nodeManager.addNode(node);
+               nodeManager.connect(node);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void disconnectFromNode(Node node) {
+               nodeManager.disconnect(node);
        }
 
        //
@@ -306,4 +355,22 @@ public class CoreImpl implements Core {
                /* TODO */
        }
 
+       //
+       // INTERFACE NodeListener
+       //
+
+       /**
+        * {@inheritDoc}
+        */
+       public void nodeConnected(Node node) {
+               fireNodeConnected(node);
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void nodeDisconnected(Node node, Throwable throwable) {
+               fireNodeDisconnected(node, throwable);
+       }
+
 }