Merge commit '77d3a60869e7a780c6ae069e51530e1eacece5e2'
[fanfix.git] / src / be / nikiroo / utils / serial / server / ConnectActionClient.java
index 626b62f78494ab4fdb818220629a281bc3507f14..cb6bef3988c94e8f07d0306a8714ff85f3a9b1d8 100644 (file)
@@ -2,6 +2,7 @@ package be.nikiroo.utils.serial.server;
 
 import java.io.IOException;
 import java.net.Socket;
+import java.net.UnknownHostException;
 
 import be.nikiroo.utils.Version;
 
@@ -22,33 +23,29 @@ abstract class ConnectActionClient {
        protected ConnectAction action;
 
        /**
-        * Create a new {@link ConnectActionClient} with the current application
-        * version (see {@link Version#getCurrentVersion()}) as the client version.
-        * 
-        * @param s
-        *            the socket to bind to
-        */
-       public ConnectActionClient(Socket s) {
-               this(s, Version.getCurrentVersion());
-       }
-
-       /**
-        * Create a new {@link ConnectActionClient} with the current application
-        * version (see {@link Version#getCurrentVersion()}) as the client version.
+        * Create a new {@link ConnectActionClient}, using the current version of
+        * the program.
         * 
         * @param host
         *            the host to bind to
         * @param port
         *            the port to bind to
-        * @param ssl
-        *            TRUE for an SSL connection, FALSE for plain text
+        * @param key
+        *            an optional key to encrypt all the communications (if NULL,
+        *            everything will be sent in clear text)
+        * 
         * 
         * @throws IOException
-        *             in case of I/O error when creating the socket
+        *             in case of I/O error
+        * @throws UnknownHostException
+        *             if the host is not known
+        * @throws IllegalArgumentException
+        *             if the port parameter is outside the specified range of valid
+        *             port values, which is between 0 and 65535, inclusive
         */
-       public ConnectActionClient(String host, int port, boolean ssl)
+       public ConnectActionClient(String host, int port, String key)
                        throws IOException {
-               this(Server.createSocket(host, port, ssl), Version.getCurrentVersion());
+               this(host, port, key, Version.getCurrentVersion());
        }
 
        /**
@@ -58,17 +55,38 @@ abstract class ConnectActionClient {
         *            the host to bind to
         * @param port
         *            the port to bind to
-        * @param ssl
-        *            TRUE for an SSL connection, FALSE for plain text
-        * @param version
+        * @param key
+        *            an optional key to encrypt all the communications (if NULL,
+        *            everything will be sent in clear text)
+        * @param clientVersion
         *            the client version
         * 
+        * 
         * @throws IOException
-        *             in case of I/O error when creating the socket
+        *             in case of I/O error
+        * @throws UnknownHostException
+        *             if the host is not known
+        * @throws IllegalArgumentException
+        *             if the port parameter is outside the specified range of valid
+        *             port values, which is between 0 and 65535, inclusive
+        */
+       public ConnectActionClient(String host, int port, String key,
+                       Version clientVersion) throws IOException {
+               this(new Socket(host, port), key, clientVersion);
+       }
+
+       /**
+        * Create a new {@link ConnectActionClient}, using the current version of
+        * the program.
+        * 
+        * @param s
+        *            the socket to bind to
+        * @param key
+        *            an optional key to encrypt all the communications (if NULL,
+        *            everything will be sent in clear text)
         */
-       public ConnectActionClient(String host, int port, boolean ssl,
-                       Version version) throws IOException {
-               this(Server.createSocket(host, port, ssl), version);
+       public ConnectActionClient(Socket s, String key) {
+               this(s, key, Version.getCurrentVersion());
        }
 
        /**
@@ -76,11 +94,14 @@ abstract class ConnectActionClient {
         * 
         * @param s
         *            the socket to bind to
-        * @param version
+        * @param key
+        *            an optional key to encrypt all the communications (if NULL,
+        *            everything will be sent in clear text)
+        * @param clientVersion
         *            the client version
         */
-       public ConnectActionClient(Socket s, Version version) {
-               action = new ConnectAction(s, false, version) {
+       public ConnectActionClient(Socket s, String key, Version clientVersion) {
+               action = new ConnectAction(s, false, key, clientVersion) {
                        @Override
                        protected void action(Version serverVersion) throws Exception {
                                ConnectActionClient.this.action(serverVersion);
@@ -123,7 +144,7 @@ abstract class ConnectActionClient {
         * Method that will be called when an action is performed on the client.
         * 
         * @param serverVersion
-        *            the server version
+        *            the version of the server connected to this client
         * 
         * @throws Exception
         *             in case of I/O error