X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FServerString.java;h=6a0d4f462c48d1adfc46f5723bd240514cdf020e;hb=340e6065e8027c2b3b88549b5761b0b9f6950a53;hp=3185c6f450f0cda09c4b66d7b1924d917c027417;hpb=f4053377fa15da2f11e82955bfab86e673fa371c;p=fanfix.git diff --git a/src/be/nikiroo/utils/serial/server/ServerString.java b/src/be/nikiroo/utils/serial/server/ServerString.java index 3185c6f..6a0d4f4 100644 --- a/src/be/nikiroo/utils/serial/server/ServerString.java +++ b/src/be/nikiroo/utils/serial/server/ServerString.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 Strings. @@ -24,8 +22,9 @@ abstract public class ServerString extends Server { * the port to listen on, or 0 to assign any unallocated port * found (which can later on be queried via * {@link ServerString#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 ServerString extends Server { * if the port parameter is outside the specified range of valid * port values, which is between 0 and 65535, inclusive */ - public ServerString(int port, boolean ssl) throws IOException { - super(port, ssl); + public ServerString(int port, String key) throws IOException { + super(port, key); } /** @@ -47,8 +46,9 @@ abstract public class ServerString 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,19 +58,23 @@ abstract public class ServerString extends Server { * if the port parameter is outside the specified range of valid * port values, which is between 0 and 65535, inclusive */ - public ServerString(String name, int port, boolean ssl) throws IOException { - super(name, port, ssl); + public ServerString(String name, int port, String key) throws IOException { + super(name, port, key); } @Override protected ConnectActionServer createConnectActionServer(Socket s) { - return new ConnectActionServerString(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; + } } catch (Exception e) { onError(e); } @@ -78,9 +82,10 @@ abstract public class ServerString extends Server { if (rep == null) { rep = ""; } - send(rep); } + + onRequestDone(id, getBytesReceived(), getBytesSent()); } @Override @@ -90,6 +95,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. *

@@ -98,10 +110,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 * @@ -109,5 +122,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; }