X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FServerObject.java;h=f79776696cdc2e6c5fae13e6ed0f733c814268c2;hb=ae0ca537218b08a53929a5f2545269fc99e2b0b1;hp=4f72013a3e7008896a65107d6e8737f87a640c0e;hpb=8468bb79f0fc9c88fa21355509731625732eb10e;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/server/ServerObject.java b/src/be/nikiroo/utils/serial/server/ServerObject.java index 4f72013..f797766 100644 --- a/src/be/nikiroo/utils/serial/server/ServerObject.java +++ b/src/be/nikiroo/utils/serial/server/ServerObject.java @@ -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. @@ -68,22 +66,25 @@ abstract public class ServerObject extends Server { protected ConnectActionServer createConnectActionServer(Socket s) { return new ConnectActionServerObject(s, key) { @Override - public void action(Version clientVersion) throws Exception { + public void action() throws Exception { + long id = getNextId(); try { for (Object data = rec(); true; data = rec()) { Object rep = null; try { - rep = onRequest(this, clientVersion, data); + rep = onRequest(this, data, id); if (isClosing()) { return; } } catch (Exception e) { onError(e); } + send(rep); } } catch (NullPointerException e) { // Client has no data any more, we quit + onRequestDone(id, getBytesReceived(), getBytesSent()); } } @@ -101,10 +102,11 @@ 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) + * @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 (which can be NULL) * @@ -112,5 +114,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, long id) throws Exception; }