+
+func adddelrmrroute(routelist models.Routelist, rtflag bool) error {
+ xapp.Logger.Info("Updating rmrroute with Route list: %v,flag: %v", routelist, rtflag)
+ for _, rlist := range routelist {
+ var subid int32
+ var data string
+ if rlist.SubscriptionID == 0 {
+ subid = -1
+ } else {
+ subid = rlist.SubscriptionID
+ }
+ if rlist.SenderEndPoint == "" && rlist.SubscriptionID != 0 {
+ data = fmt.Sprintf("mse|%d|%d|%s\n", *rlist.MessageType, rlist.SubscriptionID, *rlist.TargetEndPoint)
+ } else if rlist.SenderEndPoint == "" && rlist.SubscriptionID == 0 {
+ data = fmt.Sprintf("mse|%d|-1|%s\n", *rlist.MessageType, *rlist.TargetEndPoint)
+ } else {
+ data = fmt.Sprintf("mse|%d,%s|%d|%s\n", *rlist.MessageType, rlist.SenderEndPoint, subid, *rlist.TargetEndPoint)
+ }
+ err := checkrepeatedroute(data)
+
+ if rtflag == true {
+ if err == true {
+ xapp.Logger.Info("Given route %s is a duplicate", data)
+ }
+ rtmgr.DynamicRouteList = append(rtmgr.DynamicRouteList, data)
+ routearray := strings.Join(rtmgr.DynamicRouteList, " ")
+ xapp.Sdl.Store("routes", routearray)
+ } else {
+ if err == true {
+ xapp.Logger.Info("Successfully deleted route: %s", data)
+ routearray := strings.Join(rtmgr.DynamicRouteList, " ")
+ xapp.Sdl.Store("routes", routearray)
+ } else {
+ xapp.Logger.Info("No such route: %s", data)
+ return errors.New("No such route: " + data)
+ }
+
+ }
+ }
+ return sendRoutesToAll()
+}
+
+func checkrepeatedroute(data string) bool {
+ for i := 0; i < len(rtmgr.DynamicRouteList); i++ {
+ if rtmgr.DynamicRouteList[i] == data {
+ rtmgr.DynamicRouteList[i] = rtmgr.DynamicRouteList[len(rtmgr.DynamicRouteList)-1]
+ rtmgr.DynamicRouteList[len(rtmgr.DynamicRouteList)-1] = ""
+ rtmgr.DynamicRouteList = rtmgr.DynamicRouteList[:len(rtmgr.DynamicRouteList)-1]
+ return true
+ }
+ }
+ return false
+}