introduced xran UE context ID
diff --git a/src/main/java/org.onosproject.xran/wrapper/LinkMap.java b/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
index 5e62271..ed7b4f1 100644
--- a/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
+++ b/src/main/java/org.onosproject.xran/wrapper/LinkMap.java
@@ -19,7 +19,6 @@
import org.onosproject.xran.XranStore;
import org.onosproject.xran.codecs.api.CRNTI;
import org.onosproject.xran.codecs.api.ECGI;
-import org.onosproject.xran.codecs.api.MMEUES1APID;
import org.onosproject.xran.entities.RnibCell;
import org.onosproject.xran.entities.RnibLink;
import org.onosproject.xran.entities.RnibUe;
@@ -63,7 +62,20 @@
return link;
}
- public RnibLink get(ECGI src, MMEUES1APID dst) {
+ public RnibLink putNonServingLink(RnibCell cell, Long ueId) {
+ RnibLink link = null;
+ RnibUe ue = ueMap.get(ueId);
+
+ if (ue != null) {
+ link = new RnibLink(cell, ue);
+ xranStore.storeLink(link);
+ } else {
+ log.error("Could not find mapping for CRNTI to UE. Aborting creation of non-serving link");
+ }
+ return link;
+ }
+
+ public RnibLink get(ECGI src, Long dst) {
if (src != null && dst != null) {
return xranStore.getLink(src, dst);
}
@@ -74,17 +86,17 @@
RnibUe ue = ueMap.get(src, dst);
if (ue != null) {
- return xranStore.getLink(src, ue.getMmeS1apId());
+ return xranStore.getLink(src, ue.getId());
}
return null;
}
- public CRNTI getCrnti(MMEUES1APID mme) {
- return ueMap.getCrntUe().inverse().get(mme).getValue();
+ public CRNTI getCrnti(Long ueId) {
+ return ueMap.getCrntUe().inverse().get(ueId).getValue();
}
public RnibCell getPrimaryCell(RnibUe ue) {
- List<RnibLink> linksByUeId = xranStore.getLinksByUeId(ue.getMmeS1apId().longValue());
+ List<RnibLink> linksByUeId = xranStore.getLinksByUeId(ue.getId());
Optional<RnibLink> primary = linksByUeId.stream()
.filter(l -> l.getType().equals(RnibLink.Type.SERVING_PRIMARY))
.findFirst();
diff --git a/src/main/java/org.onosproject.xran/wrapper/UeMap.java b/src/main/java/org.onosproject.xran/wrapper/UeMap.java
index 1938a79..8b2110d 100644
--- a/src/main/java/org.onosproject.xran/wrapper/UeMap.java
+++ b/src/main/java/org.onosproject.xran/wrapper/UeMap.java
@@ -16,25 +16,18 @@
package org.onosproject.xran.wrapper;
-import com.google.common.base.Objects;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-import io.netty.channel.ChannelHandlerContext;
-import javafx.util.Pair;
-import org.onosproject.net.HostId;
import org.onosproject.xran.XranStore;
import org.onosproject.xran.codecs.api.CRNTI;
import org.onosproject.xran.codecs.api.ECGI;
-import org.onosproject.xran.codecs.api.ENBUES1APID;
import org.onosproject.xran.codecs.api.MMEUES1APID;
import org.onosproject.xran.entities.RnibCell;
import org.onosproject.xran.entities.RnibUe;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
+import org.onosproject.xran.identifiers.EcgiCrntiPair;
public class UeMap {
- private BiMap<EcgiCrntiPair, MMEUES1APID> crntUe = HashBiMap.create();
+ private BiMap<EcgiCrntiPair, Long> crntUe = HashBiMap.create();
private XranStore xranStore;
@@ -42,75 +35,44 @@
this.xranStore = xranStore;
}
- public BiMap<EcgiCrntiPair, MMEUES1APID> getCrntUe() {
+ public BiMap<EcgiCrntiPair, Long> getCrntUe() {
return crntUe;
}
public void putCrnti(RnibCell cell, RnibUe ue) {
- CRNTI ranId = ue.getRanId();
+ CRNTI ranId = ue.getCrnti();
ECGI ecgi = cell.getEcgi();
if (ranId != null && ecgi != null) {
- crntUe.put(EcgiCrntiPair.valueOf(cell.getEcgi(),ue.getRanId()), ue.getMmeS1apId());
+ EcgiCrntiPair oldPair = crntUe.inverse().get(ue.getId()),
+ newPair = EcgiCrntiPair.valueOf(cell.getEcgi(), ue.getCrnti());
+ if (oldPair == null) {
+ crntUe.put(newPair, ue.getId());
+ } else {
+ crntUe.inverse().remove(ue.getId());
+ crntUe.put(newPair, ue.getId());
+ }
}
}
public void put(RnibCell cell, RnibUe ue) {
-
- MMEUES1APID mmeS1apId = ue.getMmeS1apId();
- if (mmeS1apId != null) {
- xranStore.storeUe(ue);
- putCrnti(cell, ue);
- }
+ xranStore.storeUe(ue);
+ putCrnti(cell, ue);
}
public RnibUe get(ECGI ecgi, CRNTI crnti) {
- MMEUES1APID mme = crntUe.get(EcgiCrntiPair.valueOf(ecgi, crnti));
- if (mme != null) {
- return xranStore.getUe(mme);
+ Long aLong = crntUe.get(EcgiCrntiPair.valueOf(ecgi, crnti));
+ if (aLong != null) {
+ return xranStore.getUe(aLong);
}
return null;
}
- public RnibUe get(MMEUES1APID mme) {
- if (mme != null) {
- return xranStore.getUe(mme);
- }
- return null;
+ public RnibUe get(Long ueId) {
+ return xranStore.getUe(ueId);
}
- public boolean remove(MMEUES1APID id) {
- crntUe.inverse().remove(id);
- return xranStore.removeUe(id);
- }
-
- public static class EcgiCrntiPair extends Pair<ECGI, CRNTI> {
-
- /**
- * Creates a new pair
- *
- * @param key The key for this pair
- * @param value The value to use for this pair
- */
- public EcgiCrntiPair(ECGI key, CRNTI value) {
- super(key, value);
- }
-
- public static EcgiCrntiPair valueOf(ECGI key, CRNTI value) {
- return new EcgiCrntiPair(key, value);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(getKey(), getValue());
- }
-
- @Override
- public boolean equals(Object o) {
- if (o instanceof EcgiCrntiPair) {
- return ((EcgiCrntiPair) o).getKey().equals(getKey()) &&
- ((EcgiCrntiPair) o).getValue().equals(getValue());
- }
- return super.equals(o);
- }
+ public boolean remove(Long ueId) {
+ crntUe.inverse().remove(ueId);
+ return xranStore.removeUe(ueId);
}
}