2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
17 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
20 package rmrmsghandlerprovider
26 "e2mgr/handlers/rmrmsghandlers"
31 "e2mgr/services/rmrsender"
35 type NotificationHandlerProvider struct {
36 notificationHandlers map[int]rmrmsghandlers.NotificationHandler
39 func NewNotificationHandlerProvider() *NotificationHandlerProvider {
40 return &NotificationHandlerProvider{
41 notificationHandlers: map[int]rmrmsghandlers.NotificationHandler{},
45 // TODO: check whether it has been initialized
46 func (provider NotificationHandlerProvider) GetNotificationHandler(messageType int) (rmrmsghandlers.NotificationHandler, error) {
47 handler, ok := provider.notificationHandlers[messageType]
50 return nil, fmt.Errorf("notification handler not found for message %d", messageType)
56 func (provider *NotificationHandlerProvider) Register(msgType int, handler rmrmsghandlers.NotificationHandler) {
57 provider.notificationHandlers[msgType] = handler
60 func (provider *NotificationHandlerProvider) Init(logger *logger.Logger, config *configuration.Configuration,
61 rnibDataService services.RNibDataService, rmrSender *rmrsender.RmrSender, e2tInstancesManager managers.IE2TInstancesManager,
62 routingManagerClient clients.IRoutingManagerClient, e2tAssociationManager *managers.E2TAssociationManager,
63 ranConnectStatusChangeManager managers.IRanConnectStatusChangeManager) {
66 x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger)
67 x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger)
68 endcSetupResponseConverter := converters.NewEndcSetupResponseConverter(logger)
69 endcSetupFailureResponseConverter := converters.NewEndcSetupFailureResponseConverter(logger)
70 //enbLoadInformationExtractor := converters.NewEnbLoadInformationExtractor(logger)
71 x2ResetResponseExtractor := converters.NewX2ResetResponseExtractor(logger)
74 ranReconnectionManager := managers.NewRanDisconnectionManager(logger, config, rnibDataService, e2tAssociationManager, ranConnectStatusChangeManager)
75 ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender)
76 x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter)
77 x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter)
78 endcSetupResponseManager := managers.NewEndcSetupResponseManager(endcSetupResponseConverter)
79 endcSetupFailureResponseManager := managers.NewEndcSetupFailureResponseManager(endcSetupFailureResponseConverter)
82 x2SetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP)
83 x2SetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupFailureResponseManager, nil, rmrCgo.RIC_X2_SETUP_FAILURE)
84 endcSetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_ENDC_X2_SETUP_RESP)
85 endcSetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupFailureResponseManager, nil, rmrCgo.RIC_ENDC_X2_SETUP_FAILURE)
86 ranLostConnectionHandler := rmrmsghandlers.NewRanLostConnectionHandler(logger, ranReconnectionManager)
87 //enbLoadInformationNotificationHandler := rmrmsghandlers.NewEnbLoadInformationNotificationHandler(logger, rnibDataService, enbLoadInformationExtractor)
88 x2EnbConfigurationUpdateHandler := rmrmsghandlers.NewX2EnbConfigurationUpdateHandler(logger, rmrSender)
89 endcConfigurationUpdateHandler := rmrmsghandlers.NewEndcConfigurationUpdateHandler(logger, rmrSender)
90 x2ResetResponseHandler := rmrmsghandlers.NewX2ResetResponseHandler(logger, rnibDataService, ranStatusChangeManager, x2ResetResponseExtractor)
91 x2ResetRequestNotificationHandler := rmrmsghandlers.NewX2ResetRequestNotificationHandler(logger, rnibDataService, ranStatusChangeManager, rmrSender)
92 e2TermInitNotificationHandler := rmrmsghandlers.NewE2TermInitNotificationHandler(logger, ranReconnectionManager, e2tInstancesManager, routingManagerClient)
93 e2TKeepAliveResponseHandler := rmrmsghandlers.NewE2TKeepAliveResponseHandler(logger, rnibDataService, e2tInstancesManager)
94 e2SetupRequestNotificationHandler := rmrmsghandlers.NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManager, rmrSender, rnibDataService, e2tAssociationManager, ranConnectStatusChangeManager)
96 provider.Register(rmrCgo.RIC_X2_SETUP_RESP, x2SetupResponseHandler)
97 provider.Register(rmrCgo.RIC_X2_SETUP_FAILURE, x2SetupFailureResponseHandler)
98 provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_RESP, endcSetupResponseHandler)
99 provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_FAILURE, endcSetupFailureResponseHandler)
100 provider.Register(rmrCgo.RIC_SCTP_CONNECTION_FAILURE, ranLostConnectionHandler)
101 //provider.Register(rmrCgo.RIC_ENB_LOAD_INFORMATION, enbLoadInformationNotificationHandler)
102 provider.Register(rmrCgo.RIC_ENB_CONF_UPDATE, x2EnbConfigurationUpdateHandler)
103 provider.Register(rmrCgo.RIC_ENDC_CONF_UPDATE, endcConfigurationUpdateHandler)
104 provider.Register(rmrCgo.RIC_X2_RESET_RESP, x2ResetResponseHandler)
105 provider.Register(rmrCgo.RIC_X2_RESET, x2ResetRequestNotificationHandler)
106 provider.Register(rmrCgo.RIC_E2_TERM_INIT, e2TermInitNotificationHandler)
107 provider.Register(rmrCgo.E2_TERM_KEEP_ALIVE_RESP, e2TKeepAliveResponseHandler)
108 provider.Register(rmrCgo.RIC_E2_SETUP_REQ, e2SetupRequestNotificationHandler)