* @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>();
}
}
+ /**
+ * 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
//
* {@inheritDoc}
*/
public void connectToNode(Node node) {
- /* TODO */
+ fireNodeConnecting(node);
+ nodeManager.addNode(node);
+ nodeManager.connect(node);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void disconnectFromNode(Node node) {
+ nodeManager.disconnect(node);
}
//
/* TODO */
}
+ //
+ // INTERFACE NodeListener
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeConnected(Node node) {
+ fireNodeConnected(node);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeDisconnected(Node node, Throwable throwable) {
+ fireNodeDisconnected(node, throwable);
+ }
+
}