e2ap *E2ap
registry *Registry
tracker *Tracker
- db Sdlnterface
+ e2SubsDb Sdlnterface
+ restSubsDb Sdlnterface
CntRecvMsg uint64
ResetTestFlag bool
Counters map[string]xapp.Counter
c := &Control{e2ap: new(E2ap),
registry: registry,
tracker: tracker,
- db: CreateSdl(),
+ e2SubsDb: CreateSdl(),
+ restSubsDb: CreateRESTSdl(),
Counters: xapp.Metric.RegisterCounterGroup(GetMetricsOpts(), "SUBMGR"),
LoggerLevel: 3,
}
c.registry.register = register
c.HandleUncompletedSubscriptions(register)
}
+
+ restSubscriptions, err := c.ReadAllRESTSubscriptionsFromSdl()
+ if err != nil {
+ xapp.Logger.Error("%v", err)
+ } else {
+ c.registry.restSubscriptions = restSubscriptions
+ }
return c
}
return &subResp, nil
}
}
- restSubscription.Md5sumOngoing = md5sum
+ restSubscription.Md5sum = md5sum
}
+ c.WriteRESTSubscriptionToDb(restSubId, restSubscription)
+
go c.processSubscriptionRequests(restSubscription, &subReqList, p.ClientEndpoint, p.Meid, &restSubId, xAppRmrEndpoint)
c.UpdateCounter(cRestSubRespToXapp)
}
// Mark REST subscription request processed.
restSubscription.SetProcessed()
+ c.UpdateRESTSubscriptionInDB(*restSubId, restSubscription, false)
if trans != nil {
xapp.Logger.Info("Sending unsuccessful REST notification (cause %s) to endpoint=%v:%v, XappEventInstanceID=%v, E2EventInstanceID=%v, %s",
errorCause, clientEndpoint.Host, *clientEndpoint.HTTPPort, xAppEventInstanceID, e2EventInstanceID, idstring(nil, trans))
xapp.Logger.Info("Sending unsuccessful REST notification (cause %s) to endpoint=%v:%v, XappEventInstanceID=%v, E2EventInstanceID=%v",
errorCause, clientEndpoint.Host, *clientEndpoint.HTTPPort, xAppEventInstanceID, e2EventInstanceID)
}
- xapp.Subscription.Notify(resp, *clientEndpoint)
+
c.UpdateCounter(cRestSubFailNotifToXapp)
+ xapp.Subscription.Notify(resp, *clientEndpoint)
}
func (c *Control) sendSuccesfullResponseNotification(restSubId *string, restSubscription *RESTSubscription, xAppEventInstanceID int64, e2EventInstanceID int64,
}
// Mark REST subscription request processesd.
restSubscription.SetProcessed()
+ c.UpdateRESTSubscriptionInDB(*restSubId, restSubscription, false)
xapp.Logger.Info("Sending successful REST notification to endpoint=%v:%v, XappEventInstanceID=%v, E2EventInstanceID=%v, %s",
clientEndpoint.Host, *clientEndpoint.HTTPPort, xAppEventInstanceID, e2EventInstanceID, idstring(nil, trans))
- xapp.Subscription.Notify(resp, *clientEndpoint)
+
c.UpdateCounter(cRestSubNotifToXapp)
+ xapp.Subscription.Notify(resp, *clientEndpoint)
}
//-------------------------------------------------------------------
var xAppEventInstanceID int64
var e2EventInstanceID int64
- defer restDuplicateCtrl.TransactionComplete(restSubscription.Md5sumOngoing)
+ defer restDuplicateCtrl.TransactionComplete(restSubscription.Md5sum)
for index := 0; index < len(subReqList.E2APSubscriptionRequests); index++ {
subReqMsg := subReqList.E2APSubscriptionRequests[index]
restSubscription.DeleteE2InstanceId(instanceId)
}
c.registry.DeleteRESTSubscription(&restSubId)
+ c.RemoveRESTSubscriptionFromDb(restSubId)
}()
c.UpdateCounter(cRestSubDelRespToXapp)
if s == "emptydb" {
xapp.Logger.Info("RemoveAllSubscriptionsFromSdl() called")
c.RemoveAllSubscriptionsFromSdl()
+ c.RemoveAllRESTSubscriptionsFromSdl()
return
}
}
}
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) WriteRESTSubscriptionToDb(restSubId string, restSubs *RESTSubscription) {
+ xapp.Logger.Debug("WriteRESTSubscriptionToDb() restSubId = %s", restSubId)
+ err := c.WriteRESTSubscriptionToSdl(restSubId, restSubs)
+ if err != nil {
+ xapp.Logger.Error("%v", err)
+ }
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) UpdateRESTSubscriptionInDB(restSubId string, restSubs *RESTSubscription, removeRestSubscriptionFromDb bool) {
+
+ if removeRestSubscriptionFromDb == true {
+ // Subscription was written in db already when subscription request was sent to BTS, except for merged request
+ c.RemoveRESTSubscriptionFromDb(restSubId)
+ } else {
+ c.WriteRESTSubscriptionToDb(restSubId, restSubs)
+ }
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) RemoveRESTSubscriptionFromDb(restSubId string) {
+ xapp.Logger.Debug("RemoveRESTSubscriptionFromDb() restSubId = %s", restSubId)
+ err := c.RemoveRESTSubscriptionFromSdl(restSubId)
+ if err != nil {
+ xapp.Logger.Error("%v", err)
+ }
+}
+
func (c *Control) SendSubscriptionDeleteReq(subs *Subscription) {
const ricRequestorId = 123
func (c *Control) PrintRESTSubscriptionRequest(p *models.SubscriptionParams) {
fmt.Println("CRESTSubscriptionRequest")
+
+ if p.SubscriptionID != "" {
+ fmt.Println(" SubscriptionID = ", p.SubscriptionID)
+ } else {
+ fmt.Println(" SubscriptionID = ''")
+ }
+
fmt.Printf(" ClientEndpoint.Host = %s\n", p.ClientEndpoint.Host)
if p.ClientEndpoint.HTTPPort != nil {