Expose whether an FCP connection is closed
[jFCPlib.git] / src / main / java / net / pterodactylus / fcp / FcpConnection.java
index 484e7c3..0eda39d 100644 (file)
@@ -31,8 +31,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.logging.Logger;
 
-import net.pterodactylus.util.logging.Logging;
-
 /**
  * An FCP connection to a Freenet node.
  *
@@ -41,7 +39,7 @@ import net.pterodactylus.util.logging.Logging;
 public class FcpConnection implements Closeable {
 
        /** Logger. */
-       private static final Logger logger = Logging.getLogger(FcpConnection.class.getName());
+       private static final Logger logger = Logger.getLogger(FcpConnection.class.getName());
 
        /** The default port for FCP v2. */
        public static final int DEFAULT_PORT = 9481;
@@ -158,6 +156,10 @@ public class FcpConnection implements Closeable {
                fcpListenerManager.removeListener(fcpListener);
        }
 
+       public synchronized boolean isClosed() {
+               return connectionHandler != null;
+       }
+
        //
        // ACTIONS
        //
@@ -193,9 +195,10 @@ public class FcpConnection implements Closeable {
        }
 
        /**
-        * Closes the connection. If there is no connection to the node, this method
-        * does nothing.
+        * Closes the connection. If there is no connection to the node, this
+        * method does nothing.
         */
+       @Override
        public void close() {
                handleDisconnect(null);
        }
@@ -262,6 +265,8 @@ public class FcpConnection implements Closeable {
                        fcpListenerManager.fireReceivedDataFound(new DataFound(fcpMessage));
                } else if ("SubscribedUSKUpdate".equals(messageName)) {
                        fcpListenerManager.fireReceivedSubscribedUSKUpdate(new SubscribedUSKUpdate(fcpMessage));
+               } else if ("SubscribedUSK".equals(messageName)) {
+                       fcpListenerManager.fireReceivedSubscribedUSK(new SubscribedUSK(fcpMessage));
                } else if ("IdentifierCollision".equals(messageName)) {
                        fcpListenerManager.fireReceivedIdentifierCollision(new IdentifierCollision(fcpMessage));
                } else if ("AllData".equals(messageName)) {
@@ -298,6 +303,8 @@ public class FcpConnection implements Closeable {
                        }
                } else if ("PluginInfo".equals(messageName)) {
                        fcpListenerManager.fireReceivedPluginInfo(new PluginInfo(fcpMessage));
+               } else if ("PluginRemoved".equals(messageName)) {
+                       fcpListenerManager.fireReceivedPluginRemoved(new PluginRemoved(fcpMessage));
                } else if ("NodeData".equals(messageName)) {
                        fcpListenerManager.fireReceivedNodeData(new NodeData(fcpMessage));
                } else if ("TestDDAReply".equals(messageName)) {
@@ -323,8 +330,8 @@ public class FcpConnection implements Closeable {
         * Handles a disconnect from the node.
         *
         * @param throwable
-        *            The exception that caused the disconnect, or <code>null</code>
-        *            if there was no exception
+        *            The exception that caused the disconnect, or
+        *            <code>null</code> if there was no exception
         */
        synchronized void handleDisconnect(Throwable throwable) {
                FcpUtils.close(remoteInputStream);
@@ -372,8 +379,8 @@ public class FcpConnection implements Closeable {
        }
 
        /**
-        * A wrapper around an {@link InputStream} that only supplies a limit number
-        * of bytes from the underlying input stream.
+        * A wrapper around an {@link InputStream} that only supplies a limit
+        * number of bytes from the underlying input stream.
         *
         * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
         */