5f72a1f3d8dbf04c60cce89f63b50b243415027a
[ric-plt/e2mgr.git] / E2Manager / providers / rmrmsghandlerprovider / notification_handler_provider.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 package rmrmsghandlerprovider
19
20 import (
21         "e2mgr/configuration"
22         "e2mgr/converters"
23         "e2mgr/handlers/rmrmsghandlers"
24         "e2mgr/logger"
25         "e2mgr/managers"
26         "e2mgr/rmrCgo"
27         "e2mgr/services"
28         "e2mgr/services/rmrsender"
29         "fmt"
30 )
31
32 type NotificationHandlerProvider struct {
33         notificationHandlers map[int]rmrmsghandlers.NotificationHandler
34 }
35
36 func NewNotificationHandlerProvider() *NotificationHandlerProvider {
37         return &NotificationHandlerProvider{
38                 notificationHandlers: map[int]rmrmsghandlers.NotificationHandler{},
39         }
40 }
41
42 // TODO: check whether it has been initialized
43 func (provider NotificationHandlerProvider) GetNotificationHandler(messageType int) (rmrmsghandlers.NotificationHandler, error) {
44         handler, ok := provider.notificationHandlers[messageType]
45
46         if !ok {
47                 return nil, fmt.Errorf("notification handler not found for message %d", messageType)
48         }
49
50         return handler, nil
51 }
52
53 func (provider *NotificationHandlerProvider) Register(msgType int, handler rmrmsghandlers.NotificationHandler) {
54         provider.notificationHandlers[msgType] = handler
55 }
56
57 func (provider *NotificationHandlerProvider) Init(logger *logger.Logger, config *configuration.Configuration, rnibDataService services.RNibDataService, rmrSender *rmrsender.RmrSender, ranSetupManager *managers.RanSetupManager, e2tInstancesManager managers.IE2TInstancesManager) {
58
59         // Init converters
60         x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger)
61         x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger)
62         endcSetupResponseConverter := converters.NewEndcSetupResponseConverter(logger)
63         endcSetupFailureResponseConverter := converters.NewEndcSetupFailureResponseConverter(logger)
64         enbLoadInformationExtractor := converters.NewEnbLoadInformationExtractor(logger)
65         x2ResetResponseExtractor := converters.NewX2ResetResponseExtractor(logger)
66
67         // Init managers
68         ranReconnectionManager := managers.NewRanReconnectionManager(logger, config, rnibDataService, ranSetupManager, e2tInstancesManager)
69         ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender)
70         x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter)
71         x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter)
72         endcSetupResponseManager := managers.NewEndcSetupResponseManager(endcSetupResponseConverter)
73         endcSetupFailureResponseManager := managers.NewEndcSetupFailureResponseManager(endcSetupFailureResponseConverter)
74
75         // Init handlers
76         x2SetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP)
77         x2SetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupFailureResponseManager, nil, rmrCgo.RIC_X2_SETUP_FAILURE)
78         endcSetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_ENDC_X2_SETUP_RESP)
79         endcSetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupFailureResponseManager, nil, rmrCgo.RIC_ENDC_X2_SETUP_FAILURE)
80         ranLostConnectionHandler := rmrmsghandlers.NewRanLostConnectionHandler(logger, ranReconnectionManager)
81         enbLoadInformationNotificationHandler := rmrmsghandlers.NewEnbLoadInformationNotificationHandler(logger, rnibDataService, enbLoadInformationExtractor)
82         x2EnbConfigurationUpdateHandler := rmrmsghandlers.NewX2EnbConfigurationUpdateHandler(logger, rmrSender)
83         endcConfigurationUpdateHandler := rmrmsghandlers.NewEndcConfigurationUpdateHandler(logger, rmrSender)
84         x2ResetResponseHandler := rmrmsghandlers.NewX2ResetResponseHandler(logger, rnibDataService, ranStatusChangeManager, x2ResetResponseExtractor)
85         x2ResetRequestNotificationHandler := rmrmsghandlers.NewX2ResetRequestNotificationHandler(logger, rnibDataService, ranStatusChangeManager, rmrSender)
86         e2TermInitNotificationHandler := rmrmsghandlers.NewE2TermInitNotificationHandler(logger, ranReconnectionManager, rnibDataService, e2tInstancesManager)
87
88         provider.Register(rmrCgo.RIC_X2_SETUP_RESP, x2SetupResponseHandler)
89         provider.Register(rmrCgo.RIC_X2_SETUP_FAILURE, x2SetupFailureResponseHandler)
90         provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_RESP, endcSetupResponseHandler)
91         provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_FAILURE, endcSetupFailureResponseHandler)
92         provider.Register(rmrCgo.RIC_SCTP_CONNECTION_FAILURE, ranLostConnectionHandler)
93         provider.Register(rmrCgo.RIC_ENB_LOAD_INFORMATION, enbLoadInformationNotificationHandler)
94         provider.Register(rmrCgo.RIC_ENB_CONF_UPDATE, x2EnbConfigurationUpdateHandler)
95         provider.Register(rmrCgo.RIC_ENDC_CONF_UPDATE, endcConfigurationUpdateHandler)
96         provider.Register(rmrCgo.RIC_X2_RESET_RESP, x2ResetResponseHandler)
97         provider.Register(rmrCgo.RIC_X2_RESET, x2ResetRequestNotificationHandler)
98         provider.Register(rmrCgo.RIC_E2_TERM_INIT, e2TermInitNotificationHandler)
99 }