X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FServerString.java;h=3c982fd585371ee1694497880a918b2b5149a7e6;hb=601003e69e1dc81774243c6eadf7982b6b563b33;hp=9d8d008e02a3907f3c0a386ca165c1c8e4b12352;hpb=8468bb79f0fc9c88fa21355509731625732eb10e;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/server/ServerString.java b/src/be/nikiroo/utils/serial/server/ServerString.java index 9d8d008..3c982fd 100644 --- a/src/be/nikiroo/utils/serial/server/ServerString.java +++ b/src/be/nikiroo/utils/serial/server/ServerString.java @@ -69,10 +69,11 @@ abstract public class ServerString extends Server { return new ConnectActionServerString(s, key) { @Override public void action(Version clientVersion) 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, clientVersion, data, id); if (isClosing()) { return; } @@ -83,9 +84,10 @@ abstract public class ServerString extends Server { if (rep == null) { rep = ""; } - send(rep); } + + onRequestDone(id, getBytesReceived(), getBytesSent()); } @Override @@ -95,6 +97,13 @@ abstract public class ServerString extends Server { }; } + @Override + protected ConnectActionClient getConnectionToMe() + throws UnknownHostException, IOException { + return new ConnectActionClientString(new Socket((String) null, + getPort()), key); + } + /** * This is the method that is called on each client request. *

@@ -107,12 +116,68 @@ abstract public class ServerString extends Server { * 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 + * + * @throws Exception + * in case of an exception, the error will only be logged + */ + protected String onRequest(ConnectActionServerString action, + Version clientVersion, String data, + @SuppressWarnings("unused") long id) throws Exception { + // TODO: change to abstract when deprecated method is removed + // Default implementation for compat + return onRequest(action, clientVersion, data); + } + + // Deprecated // + + /** + * @deprecated SSL support has been replaced by key-based encryption. + *

+ * Please use the version with key encryption (this deprecated + * version uses an empty key when ssl is TRUE and no + * key (NULL) when ssl is FALSE). + */ + @Deprecated + public ServerString(int port, boolean ssl) throws IOException { + this(port, ssl ? "" : null); + } + + /** + * @deprecated SSL support has been replaced by key-based encryption. + *

+ * Please use the version with key encryption (this deprecated + * version uses an empty key when ssl is TRUE and no + * key (NULL) when ssl is FALSE). + */ + @Deprecated + public ServerString(String name, int port, boolean ssl) throws IOException { + this(name, port, ssl ? "" : null); + } + + /** + * Will be called if the correct version is not overrided. + * + * @deprecated use the version with the id. + * + * @param action + * the client action + * @param data + * the data sent by the client * * @return the answer to return to the client * * @throws Exception * in case of an exception, the error will only be logged */ - abstract protected String onRequest(ConnectActionServerString action, - Version clientVersion, String data) throws Exception; + @Deprecated + @SuppressWarnings("unused") + protected String onRequest(ConnectActionServerString action, + Version version, String data) throws Exception { + return null; + } }