X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FServerObject.java;h=0941f7047f5363e612c299024150663bbadf5f5a;hb=2c66fdcbb05d65ad3ddcf473c26f1247d0060267;hp=0315f90c47f74b19d557e6a029e065da89dd1911;hpb=08f80ac5fa60738d3ad74c4b5390a0b79ae313d4;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/serial/server/ServerObject.java b/src/be/nikiroo/utils/serial/server/ServerObject.java index 0315f90..0941f70 100644 --- a/src/be/nikiroo/utils/serial/server/ServerObject.java +++ b/src/be/nikiroo/utils/serial/server/ServerObject.java @@ -4,6 +4,8 @@ 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. @@ -66,12 +68,13 @@ abstract public class ServerObject extends Server { protected ConnectActionServer createConnectActionServer(Socket s) { return new ConnectActionServerObject(s, key) { @Override - public void action() throws Exception { + public void action(Version clientVersion) throws Exception { + long id = getNextId(); try { for (Object data = rec(); true; data = rec()) { Object rep = null; try { - rep = onRequest(this, data); + rep = onRequest(this, data, id); if (isClosing()) { return; } @@ -83,6 +86,7 @@ abstract public class ServerObject extends Server { } } catch (NullPointerException e) { // Client has no data any more, we quit + onRequestDone(id, getBytesReceived(), getBytesSent()); } } @@ -93,6 +97,13 @@ abstract public class ServerObject extends Server { }; } + @Override + protected ConnectActionClient getConnectionToMe() + throws UnknownHostException, IOException { + return new ConnectActionClientObject(new Socket((String) null, + getPort()), key); + } + /** * This is the method that is called on each client request. *

@@ -102,6 +113,9 @@ abstract public class ServerObject extends Server { * the client action * @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) * @@ -109,5 +123,5 @@ abstract public class ServerObject extends Server { * in case of an exception, the error will only be logged */ abstract protected Object onRequest(ConnectActionServerObject action, - Object data) throws Exception; + Object data, long id) throws Exception; }