+ count := 0
+
+ rawrt = append(rawrt, key+"meid_map|start\n")
+
+ keys := make(map[string]MeidEntry)
+ MEID := ""
+ E2TIP := ""
+ RECTYP := ""
+ for _, value := range rcs.MeidMap {
+ if strings.Contains(value, "mme_ar") {
+ tmpstr := strings.Split(value, "|")
+ //MEID entry for mme_ar must always contain 3 strings speartred by | i.e "mme_ar|<string1>|<string2>"
+ MEID = strings.TrimSuffix(tmpstr[2], "\n")
+ E2TIP = strings.TrimSuffix(tmpstr[1], "\n")
+ RECTYP = "mme_ar"
+ } else if strings.Contains(value, "mme_del") {
+ tmpstr := strings.Split(value, "|")
+ MEID = strings.TrimSuffix(tmpstr[1], "\n")
+ E2TIP = ""
+ RECTYP = "mme_del"
+ }
+ keys[MEID] = MeidEntry{RECTYP, E2TIP}
+ }
+
+ for k, v := range keys {
+ if v.recordtype == "mme_ar" {
+ rawrt = append(rawrt, key+v.recordtype+"|"+v.e2tip+"|"+k+"\n")
+ count++
+ }
+ }
+
+ rawrt = removeEmptyStrings(rawrt)
+ rawrt = append(rawrt, key+"meid_map|end|"+strconv.Itoa(count)+"\n")
+
+ xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt)
+ xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rcs)
+ return &rawrt
+}
+
+/*
+Produces the raw route message consumable by RMR
+*/
+func (r *Rmr) generatePartialRMRPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, key string, updatetype rtmgr.RMRUpdateType) *[]string {
+ rawrt := []string{key + "updatert|start\n"}
+ rt := r.generatePartialRouteTable(eps, xappSubData, updatetype)
+ for _, rte := range *rt {
+ rawrte := key + "mse|" + rte.MessageType
+ for _, tx := range rte.TxList {
+ rawrte += "," + tx.Ip + ":" + strconv.Itoa(int(tx.Port))
+ }
+ rawrte += "|" + strconv.Itoa(int(rte.SubID)) + "|"
+ group := ""
+ for _, rxg := range rte.RxGroups {
+ member := ""
+ for _, rx := range rxg {
+ if member == "" {
+ member += rx.Ip + ":" + strconv.Itoa(int(rx.Port))
+ } else {
+ member += "," + rx.Ip + ":" + strconv.Itoa(int(rx.Port))
+ }
+ }
+ if group == "" {
+ group += member
+ } else {
+ group += ";" + member
+ }
+ }
+
+ if rte.RouteType == "%meid" {
+ rawrte += "%" + "meid"
+ } else {
+ rawrte += group
+ }
+
+ rawrt = append(rawrt, rawrte+"\n")
+ }
+
+ rawrt = append(rawrt, key+"updatert|end\n")
+ //count := 0
+
+ xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt)