X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=inline;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FConnectActionClient.java;h=cb6bef3988c94e8f07d0306a8714ff85f3a9b1d8;hb=3bfc1d20054f0a97f268f1fffea29df10ae14b42;hp=1b92b42235a91e471cb650b2e8dc48608a1d6dc3;hpb=340e6065e8027c2b3b88549b5761b0b9f6950a53;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/serial/server/ConnectActionClient.java b/src/be/nikiroo/utils/serial/server/ConnectActionClient.java index 1b92b42..cb6bef3 100644 --- a/src/be/nikiroo/utils/serial/server/ConnectActionClient.java +++ b/src/be/nikiroo/utils/serial/server/ConnectActionClient.java @@ -4,7 +4,7 @@ import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; -import javax.net.ssl.SSLException; +import be.nikiroo.utils.Version; /** * Base class used for the client basic handling. @@ -23,7 +23,8 @@ abstract class ConnectActionClient { protected ConnectAction action; /** - * Create a new {@link ConnectActionClient}. + * Create a new {@link ConnectActionClient}, using the current version of + * the program. * * @param host * the host to bind to @@ -33,6 +34,7 @@ abstract class ConnectActionClient { * 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 * @throws UnknownHostException @@ -43,12 +45,40 @@ abstract class ConnectActionClient { */ public ConnectActionClient(String host, int port, String key) throws IOException { - this(new Socket(host, port), key); + this(host, port, key, Version.getCurrentVersion()); } /** * Create a new {@link ConnectActionClient}. * + * @param host + * the host to bind to + * @param port + * the port to bind to + * @param key + * an optional key to encrypt all the communications (if NULL, + * everything will be sent in clear text) + * @param clientVersion + * the client version + * + * + * @throws IOException + * in case of I/O error + * @throws UnknownHostException + * if the host is not known + * @throws IllegalArgumentException + * if the port parameter is outside the specified range of valid + * port values, which is between 0 and 65535, inclusive + */ + public ConnectActionClient(String host, int port, String key, + Version clientVersion) throws IOException { + this(new Socket(host, port), key, clientVersion); + } + + /** + * Create a new {@link ConnectActionClient}, using the current version of + * the program. + * * @param s * the socket to bind to * @param key @@ -56,37 +86,39 @@ abstract class ConnectActionClient { * everything will be sent in clear text) */ public ConnectActionClient(Socket s, String key) { - action = new ConnectAction(s, false, key) { + this(s, key, Version.getCurrentVersion()); + } + + /** + * Create a new {@link ConnectActionClient}. + * + * @param s + * the socket to bind to + * @param key + * an optional key to encrypt all the communications (if NULL, + * everything will be sent in clear text) + * @param clientVersion + * the client version + */ + public ConnectActionClient(Socket s, String key, Version clientVersion) { + action = new ConnectAction(s, false, key, clientVersion) { @Override - protected void action() throws Exception { - ConnectActionClient.this.clientHello(); - ConnectActionClient.this.action(); + protected void action(Version serverVersion) throws Exception { + ConnectActionClient.this.action(serverVersion); } @Override protected void onError(Exception e) { ConnectActionClient.this.onError(e); } - }; - } - /** - * Send the HELLO message (send a String "HELLO" to the server, to check I/O - * and encryption modes). - *
- * Will automatically handle the answer (the server must answer "HELLO" in - * kind). - * - * @throws IOException - * in case of I/O error - * @throws SSLException - * in case of encryption error - */ - protected void clientHello() throws IOException { - String HELLO = action.sendString("HELLO"); - if (!"HELLO".equals(HELLO)) { - throw new SSLException("Server did not accept the encryption key"); - } + @Override + protected Version negotiateVersion(Version clientVersion) { + new Exception("Should never be called on a client") + .printStackTrace(); + return null; + } + }; } /** @@ -111,11 +143,14 @@ abstract class ConnectActionClient { /** * Method that will be called when an action is performed on the client. * + * @param serverVersion + * the version of the server connected to this client + * * @throws Exception * in case of I/O error */ @SuppressWarnings("unused") - public void action() throws Exception { + public void action(Version serverVersion) throws Exception { } /**