Skip to content

Commit

Permalink
Send client version as first parameter and check it at server starts
Browse files Browse the repository at this point in the history
Signed-off-by: Yu-Chen Lin <[email protected]>
  • Loading branch information
npes87184 committed Nov 10, 2019
1 parent 6996cbf commit 6d0e61c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
1 change: 1 addition & 0 deletions app/src/server.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ execute_server(struct server *server, const struct server_params *params) {
#endif
"/", // unused
"com.genymobile.scrcpy.Server",
SCRCPY_VERSION,
max_size_string,
bit_rate_string,
server->tunnel_forward ? "true" : "false",
Expand Down
27 changes: 19 additions & 8 deletions server/src/main/java/com/genymobile/scrcpy/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,29 +67,40 @@ public void run() {

@SuppressWarnings("checkstyle:MagicNumber")
private static Options createOptions(String... args) {
if (args.length != 6) {
throw new IllegalArgumentException("Expecting 6 parameters");
if (args.length < 1) {
throw new IllegalArgumentException("At least client version should be specified");
}

String clientVersion = args[0];

if (!clientVersion.equals(BuildConfig.VERSION_NAME)) {
throw new java.lang.UnsupportedOperationException(
"Difference version between client and server has not support yet");

This comment has been minimized.

Copy link
@rom1v

rom1v Nov 10, 2019

I suggest: "The server version (" + args[0] + ") does not match the client (" + BuildConfig.VERSION_NAME + ")"

(and IllegalArgumentException, since the version is an argument)

}

if (args.length != 7) {
throw new IllegalArgumentException("Expecting 7 parameters");
}

Options options = new Options();

int maxSize = Integer.parseInt(args[0]) & ~7; // multiple of 8
int maxSize = Integer.parseInt(args[1]) & ~7; // multiple of 8
options.setMaxSize(maxSize);

int bitRate = Integer.parseInt(args[1]);
int bitRate = Integer.parseInt(args[2]);
options.setBitRate(bitRate);

// use "adb forward" instead of "adb tunnel"? (so the server must listen)
boolean tunnelForward = Boolean.parseBoolean(args[2]);
boolean tunnelForward = Boolean.parseBoolean(args[3]);
options.setTunnelForward(tunnelForward);

Rect crop = parseCrop(args[3]);
Rect crop = parseCrop(args[4]);
options.setCrop(crop);

boolean sendFrameMeta = Boolean.parseBoolean(args[4]);
boolean sendFrameMeta = Boolean.parseBoolean(args[5]);
options.setSendFrameMeta(sendFrameMeta);

boolean control = Boolean.parseBoolean(args[5]);
boolean control = Boolean.parseBoolean(args[6]);
options.setControl(control);

return options;
Expand Down

0 comments on commit 6d0e61c

Please sign in to comment.