add an ID for the server requests
[fanfix.git] / src / be / nikiroo / utils / serial / server / ServerString.java
index 9d8d008e02a3907f3c0a386ca165c1c8e4b12352..6fe4ad0df1a6aeb4d37aaba4de6a5f5bdf1ce306 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 Strings.
@@ -68,11 +66,12 @@ abstract public class ServerString extends Server {
        protected ConnectActionServer createConnectActionServer(Socket s) {
                return new ConnectActionServerString(s, key) {
                        @Override
-                       public void action(Version clientVersion) throws Exception {
+                       public void action() throws Exception {
+                               long id = getNextId();
                                for (String data = rec(); data != null; data = rec()) {
                                        String rep = null;
                                        try {
-                                               rep = onRequest(this, clientVersion, data);
+                                               rep = onRequest(this, data, id);
                                                if (isClosing()) {
                                                        return;
                                                }
@@ -83,9 +82,10 @@ abstract public class ServerString extends Server {
                                        if (rep == null) {
                                                rep = "";
                                        }
-
                                        send(rep);
                                }
+
+                               onRequestDone(id, getBytesReceived(), getBytesSent());
                        }
 
                        @Override
@@ -103,10 +103,11 @@ abstract public class ServerString extends Server {
         * 
         * @param action
         *            the client action
-        * @param clientVersion
-        *            the client version
         * @param data
         *            the data sent by the client
+        * @param id
+        *            an ID to identify this request (will also be re-used for
+        *            {@link ServerObject#onRequestDone(long, long, long)}.
         * 
         * @return the answer to return to the client
         * 
@@ -114,5 +115,5 @@ abstract public class ServerString extends Server {
         *             in case of an exception, the error will only be logged
         */
        abstract protected String onRequest(ConnectActionServerString action,
-                       Version clientVersion, String data) throws Exception;
+                       String data, long id) throws Exception;
 }