X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2Fserver%2FConnectActionServer.java;h=350d3fe40a1320b68f555458a43c3ceec11e8c25;hb=505be508ae7d3fb48122be548b310a238cfb91eb;hp=d0ddb92acd253cb5befda49760c5803e379e1688;hpb=08f80ac5fa60738d3ad74c4b5390a0b79ae313d4;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/serial/server/ConnectActionServer.java b/src/be/nikiroo/utils/serial/server/ConnectActionServer.java index d0ddb92..350d3fe 100644 --- a/src/be/nikiroo/utils/serial/server/ConnectActionServer.java +++ b/src/be/nikiroo/utils/serial/server/ConnectActionServer.java @@ -2,6 +2,8 @@ package be.nikiroo.utils.serial.server; import java.net.Socket; +import be.nikiroo.utils.Version; + /** * Base class used for the server basic handling. *

@@ -21,7 +23,7 @@ abstract class ConnectActionServer { protected ConnectAction action; /** - * Create a new {@link ConnectActionServer}. + * Create a new {@link ConnectActionServer}, using the current version. * * @param s * the socket to bind to @@ -30,16 +32,36 @@ abstract class ConnectActionServer { * everything will be sent in clear text) */ public ConnectActionServer(Socket s, String key) { - action = new ConnectAction(s, true, key) { + this(s, key, Version.getCurrentVersion()); + } + + /** + * Create a new {@link ConnectActionServer}. + * + * @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 serverVersion + * the version of this server,that will be sent to the client + */ + public ConnectActionServer(Socket s, String key, Version serverVersion) { + action = new ConnectAction(s, true, key, serverVersion) { @Override - protected void action() throws Exception { - ConnectActionServer.this.action(); + protected void action(Version clientVersion) throws Exception { + ConnectActionServer.this.action(clientVersion); } @Override protected void onError(Exception e) { ConnectActionServer.this.onError(e); } + + @Override + protected Version negotiateVersion(Version clientVersion) { + return ConnectActionServer.this.negotiateVersion(clientVersion); + } }; } @@ -111,11 +133,14 @@ abstract class ConnectActionServer { /** * Method that will be called when an action is performed on the server. * + * @param clientVersion + * the version of the client connected to this server + * * @throws Exception * in case of I/O error */ @SuppressWarnings("unused") - public void action() throws Exception { + public void action(Version clientVersion) throws Exception { } /** @@ -128,4 +153,19 @@ abstract class ConnectActionServer { */ protected void onError(@SuppressWarnings("unused") Exception e) { } + + /** + * Method called when we negotiate the version with the client. + *

+ * Will return the actual server version by default. + * + * @param clientVersion + * the client version + * + * @return the version to send to the client + */ + protected Version negotiateVersion( + @SuppressWarnings("unused") Version clientVersion) { + return action.getVersion(); + } } \ No newline at end of file