diff options
author | cyBerta <cyberta@riseup.net> | 2021-11-23 12:32:07 +0100 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2021-11-23 12:32:07 +0100 |
commit | 9bf787465a3ae22c76249317496c8927b22ffdb4 (patch) | |
tree | fb37e1079a6aa19d027a38e024e0b5519eda7d52 /app/src/main/java/se/leap/bitmaskclient/base/models | |
parent | ecbf65eeb79a0172b19881beb3805c8f3ebff132 (diff) |
calculate and show gateway load related to transport
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/models')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/models/Location.java | 68 |
1 files changed, 47 insertions, 21 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java index 599a358a..e0ce9e8b 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java @@ -19,29 +19,62 @@ package se.leap.bitmaskclient.base.models; import androidx.annotation.NonNull; +import java.util.HashMap; import java.util.HashSet; import de.blinkt.openvpn.core.connection.Connection; public class Location implements Cloneable { - @NonNull public String name = ""; - @NonNull public HashSet<Connection.TransportType> supportedTransports = new HashSet<>(); - public double averageLoad; - public int numberOfGateways; + @NonNull private String name = ""; + @NonNull private HashMap<Connection.TransportType, Double> averageLoad = new HashMap<>(); + @NonNull private HashMap<Connection.TransportType, Integer> numberOfGateways = new HashMap<>(); public boolean selected; public Location() {} - public Location(@NonNull String name, double averageLoad, int numberOfGateways, @NonNull HashSet<Connection.TransportType> supportedTransports, boolean selected) { + public Location(@NonNull String name, + @NonNull HashMap<Connection.TransportType, Double> averageLoad, + @NonNull HashMap<Connection.TransportType, Integer> numberOfGateways, + boolean selected) { this.name = name; this.averageLoad = averageLoad; this.numberOfGateways = numberOfGateways; - this.supportedTransports = supportedTransports; this.selected = selected; } public boolean hasLocationInfo() { - return numberOfGateways != 0 && supportedTransports.size() != 0 && !name.isEmpty(); + return !numberOfGateways.isEmpty() && !averageLoad.isEmpty() && !name.isEmpty(); + } + + public boolean supportsTransport(Connection.TransportType transportType) { + return numberOfGateways.containsKey(transportType); + } + + public void setAverageLoad(Connection.TransportType transportType, double load) { + averageLoad.put(transportType, load); + } + + public double getAverageLoad(Connection.TransportType transportType) { + if (averageLoad.containsKey(transportType)) { + return averageLoad.get(transportType); + } + return 0; + } + + public void setNumberOfGateways(Connection.TransportType transportType, int numbers) { + numberOfGateways.put(transportType, numbers); + } + + public int getNumberOfGateways(Connection.TransportType transportType) { + if (numberOfGateways.containsKey(transportType)) { + return numberOfGateways.get(transportType); + } + return 0; + } + + @NonNull + public String getName() { + return name; } @Override @@ -51,21 +84,16 @@ public class Location implements Cloneable { Location location = (Location) o; - if (Double.compare(location.averageLoad, averageLoad) != 0) return false; - if (numberOfGateways != location.numberOfGateways) return false; if (!name.equals(location.name)) return false; - return supportedTransports.equals(location.supportedTransports); + if (!averageLoad.equals(location.averageLoad)) return false; + return numberOfGateways.equals(location.numberOfGateways); } @Override public int hashCode() { - int result; - long temp; - result = name.hashCode(); - result = 31 * result + supportedTransports.hashCode(); - temp = Double.doubleToLongBits(averageLoad); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + numberOfGateways; + int result = name.hashCode(); + result = 31 * result + averageLoad.hashCode(); + result = 31 * result + numberOfGateways.hashCode(); return result; } @@ -73,10 +101,8 @@ public class Location implements Cloneable { public Location clone() throws CloneNotSupportedException { Location copy = (Location) super.clone(); copy.name = this.name; - copy.supportedTransports = (HashSet<Connection.TransportType>) this.supportedTransports.clone(); - copy.numberOfGateways = this.numberOfGateways; - copy.averageLoad = this.averageLoad; + copy.numberOfGateways = (HashMap<Connection.TransportType, Integer>) this.numberOfGateways.clone(); + copy.averageLoad = (HashMap<Connection.TransportType, Double>) this.averageLoad.clone(); return copy; } - } |