summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
index 90c8f890..078e3fd5 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
@@ -1,20 +1,42 @@
package se.leap.bitmaskclient.eip;
+import android.util.Log;
+
import java.util.*;
public class GatewaySelector {
+ private final static String TAG = GatewaySelector.class.getSimpleName();
List<Gateway> gateways;
+ TreeMap<Integer, Set<Gateway>> offsets;
public GatewaySelector(List<Gateway> gateways) {
this.gateways = gateways;
+ this.offsets = calculateOffsets();
+
}
public Gateway select() {
return closestGateway();
}
+ public Gateway select(int nClosest) throws IndexOutOfBoundsException{
+ int i = 0;
+ for (Map.Entry<Integer,Set<Gateway>> entrySet : offsets.entrySet()) {
+ Iterator<Gateway> iterator = entrySet.getValue().iterator();
+ while (iterator.hasNext()) {
+ Gateway gateway = iterator.next();
+ if (i == nClosest) {
+ return gateway;
+ }
+ i = i+1;
+ }
+ }
+
+ Log.e(TAG, "There are less than " + nClosest + " Gateways available.");
+ return null;
+ }
+
private Gateway closestGateway() {
- TreeMap<Integer, Set<Gateway>> offsets = calculateOffsets();
return offsets.isEmpty() ? null : offsets.firstEntry().getValue().iterator().next();
}