+ return &subResp, common.SubscribeCreatedCode
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) GetE2SubscriptionDirectives(p *models.SubscriptionParams) (*E2SubscriptionDirectives, error) {
+
+ e2SubscriptionDirectives := &E2SubscriptionDirectives{}
+ if p == nil || p.E2SubscriptionDirectives == nil {
+ e2SubscriptionDirectives.E2TimeoutTimerValue = e2tSubReqTimeout
+ e2SubscriptionDirectives.E2MaxTryCount = int64(e2tMaxSubReqTryCount)
+ e2SubscriptionDirectives.CreateRMRRoute = true
+ xapp.Logger.Debug("p == nil || p.E2SubscriptionDirectives == nil. Using default values for E2TimeoutTimerValue = %v and E2RetryCount = %v RMRRoutingNeeded = true", e2tSubReqTimeout, e2tMaxSubReqTryCount)
+ } else {
+ if p.E2SubscriptionDirectives.E2TimeoutTimerValue >= 1 && p.E2SubscriptionDirectives.E2TimeoutTimerValue <= 10 {
+ e2SubscriptionDirectives.E2TimeoutTimerValue = time.Duration(p.E2SubscriptionDirectives.E2TimeoutTimerValue) * 1000000000 // Duration type cast returns nano seconds
+ } else {
+ return nil, fmt.Errorf("p.E2SubscriptionDirectives.E2TimeoutTimerValue out of range (1-10 seconds): %v", p.E2SubscriptionDirectives.E2TimeoutTimerValue)
+ }
+ if p.E2SubscriptionDirectives.E2RetryCount == nil {
+ xapp.Logger.Error("p.E2SubscriptionDirectives.E2RetryCount == nil. Using default value")
+ e2SubscriptionDirectives.E2MaxTryCount = int64(e2tMaxSubReqTryCount)
+ } else {
+ if *p.E2SubscriptionDirectives.E2RetryCount >= 0 && *p.E2SubscriptionDirectives.E2RetryCount <= 10 {
+ e2SubscriptionDirectives.E2MaxTryCount = *p.E2SubscriptionDirectives.E2RetryCount + 1 // E2MaxTryCount = First sending plus two retries
+ } else {
+ return nil, fmt.Errorf("p.E2SubscriptionDirectives.E2RetryCount out of range (0-10): %v", *p.E2SubscriptionDirectives.E2RetryCount)
+ }
+ }
+ if p.E2SubscriptionDirectives.RMRRoutingNeeded == nil {
+ xapp.Logger.Error("p.E2SubscriptionDirectives.RMRRoutingNeeded == nil")
+ e2SubscriptionDirectives.CreateRMRRoute = true
+ } else {
+ e2SubscriptionDirectives.CreateRMRRoute = *p.E2SubscriptionDirectives.RMRRoutingNeeded
+ }
+ }
+ xapp.Logger.Debug("e2SubscriptionDirectives.E2TimeoutTimerValue: %v", e2SubscriptionDirectives.E2TimeoutTimerValue)
+ xapp.Logger.Debug("e2SubscriptionDirectives.E2MaxTryCount: %v", e2SubscriptionDirectives.E2MaxTryCount)
+ xapp.Logger.Debug("e2SubscriptionDirectives.CreateRMRRoute: %v", e2SubscriptionDirectives.CreateRMRRoute)
+ return e2SubscriptionDirectives, nil
+}
+
+//-------------------------------------------------------------------
+//
+//-------------------------------------------------------------------
+func (c *Control) GetSubscriptionResponse(rejectCause string, errorCause string, errorSource string, timeoutType string) *models.SubscriptionResponse {
+ subResp := models.SubscriptionResponse{}
+ subscriptionInstance := models.SubscriptionInstance{}
+ subscriptionInstance.RejectCause = &rejectCause
+ subscriptionInstance.ErrorCause = &errorCause
+ subscriptionInstance.ErrorSource = &errorSource
+ if timeoutType != "" {
+ subscriptionInstance.TimeoutType = &timeoutType
+ }
+ subResp.SubscriptionInstances = append(subResp.SubscriptionInstances, &subscriptionInstance)
+ xapp.Logger.Error("etSubscriptionResponse() %+v", subscriptionInstance)
+
+ return &subResp