working
[nikiroo-utils.git] / src / be / nikiroo / utils / serial / server / ServerObject.java
index 53606ed420a671ce34826fe0d1380dac9501d05d..0315f90c47f74b19d557e6a029e065da89dd1911 100644 (file)
@@ -4,8 +4,6 @@ import java.io.IOException;
 import java.net.Socket;
 import java.net.UnknownHostException;
 
-import be.nikiroo.utils.Version;
-
 /**
  * This class implements a simple server that can listen for connections and
  * send/receive objects.
@@ -24,8 +22,9 @@ abstract public class ServerObject extends Server {
         *            the port to listen on, or 0 to assign any unallocated port
         *            found (which can later on be queried via
         *            {@link ServerObject#getPort()}
-        * @param ssl
-        *            use a SSL connection (or not)
+        * @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
@@ -35,8 +34,8 @@ abstract public class ServerObject extends Server {
         *             if the port parameter is outside the specified range of valid
         *             port values, which is between 0 and 65535, inclusive
         */
-       public ServerObject(int port, boolean ssl) throws IOException {
-               super(port, ssl);
+       public ServerObject(int port, String key) throws IOException {
+               super(port, key);
        }
 
        /**
@@ -47,8 +46,9 @@ abstract public class ServerObject extends Server {
         *            the server name (only used for debug info and traces)
         * @param port
         *            the port to listen on
-        * @param ssl
-        *            use a SSL connection (or not)
+        * @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
@@ -58,23 +58,27 @@ abstract public class ServerObject extends Server {
         *             if the port parameter is outside the specified range of valid
         *             port values, which is between 0 and 65535, inclusive
         */
-       public ServerObject(String name, int port, boolean ssl) throws IOException {
-               super(name, port, ssl);
+       public ServerObject(String name, int port, String key) throws IOException {
+               super(name, port, key);
        }
 
        @Override
        protected ConnectActionServer createConnectActionServer(Socket s) {
-               return new ConnectActionServerObject(s) {
+               return new ConnectActionServerObject(s, key) {
                        @Override
-                       public void action(Version clientVersion) throws Exception {
+                       public void action() throws Exception {
                                try {
                                        for (Object data = rec(); true; data = rec()) {
                                                Object rep = null;
                                                try {
-                                                       rep = onRequest(this, clientVersion, data);
+                                                       rep = onRequest(this, data);
+                                                       if (isClosing()) {
+                                                               return;
+                                                       }
                                                } catch (Exception e) {
                                                        onError(e);
                                                }
+
                                                send(rep);
                                        }
                                } catch (NullPointerException e) {
@@ -96,8 +100,6 @@ abstract public class ServerObject extends Server {
         * 
         * @param action
         *            the client action
-        * @param clientVersion
-        *            the client version
         * @param data
         *            the data sent by the client (which can be NULL)
         * 
@@ -107,5 +109,5 @@ abstract public class ServerObject extends Server {
         *             in case of an exception, the error will only be logged
         */
        abstract protected Object onRequest(ConnectActionServerObject action,
-                       Version clientVersion, Object data) throws Exception;
+                       Object data) throws Exception;
 }