X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmain%2Fhttp_server.go;h=b2db55ba0bf2ed3038ffdf903ddf2e5e8b31a249;hb=refs%2Fchanges%2F28%2F828%2F1;hp=e7ee10a5947f19c4ad975d3b45dc63cf9b67d1ba;hpb=a2533f20818f4aab9ee32e2b3ef4bea298613cc7;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/main/http_server.go b/E2Manager/main/http_server.go index e7ee10a..b2db55b 100644 --- a/E2Manager/main/http_server.go +++ b/E2Manager/main/http_server.go @@ -22,6 +22,7 @@ import ( "e2mgr/controllers" "e2mgr/logger" "e2mgr/managers" + "e2mgr/managers/notificationmanager" "e2mgr/models" "e2mgr/rNibWriter" "e2mgr/rmrCgo" @@ -29,13 +30,13 @@ import ( "e2mgr/services/receivers" "fmt" "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" - "github.com/julienschmidt/httprouter" + "github.com/gorilla/mux" "log" "net/http" "os" ) -const MAX_RNIB_PULL_INSTANCES = 4 +const MAX_RNIB_POOL_INSTANCES = 4 func main() { config := configuration.ParseConfiguration() @@ -47,36 +48,45 @@ func main() { } rmrConfig := services.NewRmrConfig(config.Rmr.Port, config.Rmr.MaxMsgSize, 0, logger) var msgImpl *rmrCgo.Context - rNibWriter.Init("e2Manager", MAX_RNIB_PULL_INSTANCES) + rNibWriter.Init("e2Manager", MAX_RNIB_POOL_INSTANCES) defer rNibWriter.Close() - reader.Init("e2Manager", MAX_RNIB_PULL_INSTANCES) + reader.Init("e2Manager", MAX_RNIB_POOL_INSTANCES) defer reader.Close() - var nManager = managers.NewNotificationManager(reader.GetRNibReader, rNibWriter.GetRNibWriter) rmrResponseChannel := make(chan *models.NotificationResponse, config.NotificationResponseBuffer) rmrService := services.NewRmrService(rmrConfig, msgImpl, controllers.E2Sessions, rmrResponseChannel) + var ranReconnectionManager = managers.NewRanReconnectionManager(logger, config, reader.GetRNibReader, rNibWriter.GetRNibWriter, rmrService) + var nManager = notificationmanager.NewNotificationManager(reader.GetRNibReader, rNibWriter.GetRNibWriter, ranReconnectionManager) + rmrServiceReceiver := receivers.NewRmrServiceReceiver(*rmrService, nManager) defer rmrService.CloseContext() go rmrServiceReceiver.ListenAndHandle() go rmrService.SendResponse() - runServer(rmrService, logger, config, rmrResponseChannel) -} - -func runServer(rmrService *services.RmrService, logger *logger.Logger, config *configuration.Configuration, rmrResponseChannel chan *models.NotificationResponse) { - router := httprouter.New() controller := controllers.NewNodebController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter) - newController := controllers.NewController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter, config, rmrResponseChannel) + newController := controllers.NewController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter, config) + runServer(config.Http.Port, controller, newController) +} + +func runServer(port int, controller controllers.INodebController, newController controllers.IController) { - router.POST("/v1/nodeb/:messageType", controller.HandleRequest) - router.GET("/v1/nodeb-ids", controller.GetNodebIdList) - router.GET("/v1/nodeb/:ranName", controller.GetNodeb) - router.GET("/v1/health", controller.HandleHealthCheckRequest) - router.PUT("/v1/nodeb/shutdown", newController.ShutdownHandler) - router.PUT("/v1/nodeb-reset/:ranName", newController.X2ResetHandler) + router := mux.NewRouter(); + initializeRoutes(router, controller, newController) - port := fmt.Sprintf(":%d", config.Http.Port) - if err := http.ListenAndServe(port, router); err != nil { + addr := fmt.Sprintf(":%d", port) + if err := http.ListenAndServe(addr, router); err != nil { log.Fatalf("#runNodebServer - fail to start http server. Error: %v", err) } -} \ No newline at end of file +} + +func initializeRoutes(router *mux.Router, controller controllers.INodebController, newController controllers.IController) { + r := router.PathPrefix("/v1").Subrouter() + r.HandleFunc("/health", controller.HandleHealthCheckRequest).Methods("GET") + + rr := r.PathPrefix("/nodeb").Subrouter() + rr.HandleFunc("/{messageType}", controller.HandleRequest).Methods("POST") + rr.HandleFunc("/ids", controller.GetNodebIdList).Methods("GET") // nodeb/ids + rr.HandleFunc("/{ranName}", controller.GetNodeb).Methods("GET") + rr.HandleFunc("/shutdown", newController.ShutdownHandler).Methods("PUT") + rr.HandleFunc("/{ranName}/reset", newController.X2ResetHandler).Methods("PUT") // nodeb/{ranName}/reset +}