+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) ReadConfigParameters(f string) {
+
+ // 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)
+
+ dbTryCount = viper.GetInt("controls.dbTryCount")
+ if dbTryCount == 0 {
+ dbTryCount = 200
+ }
+ xapp.Logger.Info("dbTryCount %v", dbTryCount)
+
+ dbRetryForever = viper.GetString("controls.dbRetryForever")
+ if dbRetryForever == "" {
+ dbRetryForever = "true"
+ }
+ xapp.Logger.Info("dbRetryForever %v", dbRetryForever)
+
+ c.LoggerLevel = viper.GetUint32("logger.level")
+ if c.LoggerLevel == 0 {
+ c.LoggerLevel = 3
+ }
+ xapp.Logger.Info("LoggerLevel %v", c.LoggerLevel)
+
+ // Internal cfg parameter, used to define a wait time for RMR route clean-up. None default
+ // value 100ms used currently only in unittests.
+ waitRouteCleanup_ms = viper.GetDuration("controls.waitRouteCleanup_ms") * 1000000
+ if waitRouteCleanup_ms == 0 {
+ waitRouteCleanup_ms = 5000 * 1000000
+ }
+ xapp.Logger.Info("waitRouteCleanup %v", waitRouteCleanup_ms)
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+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)