Add helper method for checking client/server compatibility.

This commit is contained in:
akwizgran
2022-08-16 15:11:53 +01:00
parent de76986ee4
commit 079ef5b3c0
2 changed files with 14 additions and 5 deletions

View File

@@ -35,4 +35,13 @@ public class MailboxHelper {
return API_SERVER_TOO_OLD; return API_SERVER_TOO_OLD;
} }
/**
* Returns true if a client and server with the given API versions can
* communicate with each other (ie, have any major API versions in common).
*/
public static boolean isClientCompatibleWithServer(
List<MailboxVersion> client, List<MailboxVersion> server) {
int common = getHighestCommonMajorVersion(client, server);
return common != API_CLIENT_TOO_OLD && common != API_SERVER_TOO_OLD;
}
} }

View File

@@ -46,7 +46,7 @@ import javax.inject.Inject;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS; import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS;
import static org.briarproject.bramble.api.mailbox.MailboxHelper.getHighestCommonMajorVersion; import static org.briarproject.bramble.api.mailbox.MailboxHelper.isClientCompatibleWithServer;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
import static org.briarproject.bramble.api.plugin.TorConstants.ID; import static org.briarproject.bramble.api.plugin.TorConstants.ID;
@@ -627,8 +627,8 @@ class MailboxClientManager implements Service, EventListener {
*/ */
private boolean isMailboxUsable(List<MailboxVersion> contactClient, private boolean isMailboxUsable(List<MailboxVersion> contactClient,
List<MailboxVersion> server) { List<MailboxVersion> server) {
return getHighestCommonMajorVersion(contactClient, server) >= 0 return isClientCompatibleWithServer(contactClient, server)
&& getHighestCommonMajorVersion(CLIENT_SUPPORTS, server) >= 0; && isClientCompatibleWithServer(CLIENT_SUPPORTS, server);
} }
/** /**
@@ -637,8 +637,8 @@ class MailboxClientManager implements Service, EventListener {
*/ */
@SuppressWarnings("BooleanMethodIsAlwaysInverted") @SuppressWarnings("BooleanMethodIsAlwaysInverted")
private boolean isOwnMailboxUsable(MailboxProperties ownProperties) { private boolean isOwnMailboxUsable(MailboxProperties ownProperties) {
return getHighestCommonMajorVersion(CLIENT_SUPPORTS, return isClientCompatibleWithServer(CLIENT_SUPPORTS,
ownProperties.getServerSupports()) >= 0; ownProperties.getServerSupports());
} }
/** /**