+ go xapp.Subscription.Listen(c.SubscriptionHandler, c.QueryHandler, c.SubscriptionDeleteHandler)
+ //go c.subscriber.Listen(c.SubscriptionHandler, c.QueryHandler)
+
+ if readSubsFromDb == "false" {
+ return c
+ }
+
+ // Read subscriptions from db
+ xapp.Logger.Info("Reading subscriptions from db")
+ subIds, register, err := c.ReadAllSubscriptionsFromSdl()
+ if err != nil {
+ xapp.Logger.Error("%v", err)
+ } else {
+ c.registry.subIds = subIds
+ c.registry.register = register
+ c.HandleUncompletedSubscriptions(register)
+ }
+ return c
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func ReadConfigParameters() {
+
+ // viper.GetDuration returns nanoseconds
+ e2tSubReqTimeout = viper.GetDuration("controls.e2tSubReqTimeout_ms") * 1000000
+ if e2tSubReqTimeout == 0 {
+ e2tSubReqTimeout = 2000 * 1000000
+ }
+ xapp.Logger.Info("e2tSubReqTimeout %v", e2tSubReqTimeout)
+ e2tSubDelReqTime = viper.GetDuration("controls.e2tSubDelReqTime_ms") * 1000000
+ if e2tSubDelReqTime == 0 {
+ e2tSubDelReqTime = 2000 * 1000000
+ }
+ xapp.Logger.Info("e2tSubDelReqTime %v", e2tSubDelReqTime)
+ e2tRecvMsgTimeout = viper.GetDuration("controls.e2tRecvMsgTimeout_ms") * 1000000
+ if e2tRecvMsgTimeout == 0 {
+ e2tRecvMsgTimeout = 2000 * 1000000
+ }
+ xapp.Logger.Info("e2tRecvMsgTimeout %v", e2tRecvMsgTimeout)
+ e2tMaxSubReqTryCount = viper.GetUint64("controls.e2tMaxSubReqTryCount")
+ if e2tMaxSubReqTryCount == 0 {
+ e2tMaxSubReqTryCount = 1
+ }
+ xapp.Logger.Info("e2tMaxSubReqTryCount %v", e2tMaxSubReqTryCount)
+ e2tMaxSubDelReqTryCount = viper.GetUint64("controls.e2tMaxSubDelReqTryCount")
+ if e2tMaxSubDelReqTryCount == 0 {
+ e2tMaxSubDelReqTryCount = 1
+ }
+ xapp.Logger.Info("e2tMaxSubDelReqTryCount %v", e2tMaxSubDelReqTryCount)
+
+ readSubsFromDb = viper.GetString("controls.readSubsFromDb")
+ if readSubsFromDb == "" {
+ readSubsFromDb = "true"
+ }
+ xapp.Logger.Info("readSubsFromDb %v", readSubsFromDb)
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) HandleUncompletedSubscriptions(register map[uint32]*Subscription) {
+
+ xapp.Logger.Debug("HandleUncompletedSubscriptions. len(register) = %v", len(register))
+ for subId, subs := range register {
+ if subs.SubRespRcvd == false {
+ subs.NoRespToXapp = true
+ xapp.Logger.Debug("SendSubscriptionDeleteReq. subId = %v", subId)
+ c.SendSubscriptionDeleteReq(subs)
+ }
+ }
+}
+
+func (c *Control) ReadyCB(data interface{}) {
+ if c.RMRClient == nil {
+ c.RMRClient = xapp.Rmr