X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmain%2Fhttp_server.go;h=cbad8ce7a4265b0d1de581b10603cb8586f33ff3;hb=3690bcd6275fd1c83a6da94ac4dd221a31386c7a;hp=4a7b9692fb425742feedac327b86e8d96b430a13;hpb=966f2102168cad95b8aa1bc83241b4b6730ab1e2;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/main/http_server.go b/E2Manager/main/http_server.go index 4a7b969..cbad8ce 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,47 @@ 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) + rmrService := services.NewRmrService(rmrConfig, msgImpl, rmrResponseChannel) + var ranSetupManager = managers.NewRanSetupManager(logger, rmrService, rNibWriter.GetRNibWriter) + var ranReconnectionManager = managers.NewRanReconnectionManager(logger, config, reader.GetRNibReader, rNibWriter.GetRNibWriter, ranSetupManager) + 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) -} - -func runServer(rmrService *services.RmrService, logger *logger.Logger, config *configuration.Configuration) { - router := httprouter.New() controller := controllers.NewNodebController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter) - newController := controllers.NewController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter, config) + newController := controllers.NewController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter, config, ranSetupManager) + 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("/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 + rr.HandleFunc("/x2-setup", newController.X2SetupHandler).Methods("POST") + rr.HandleFunc("/endc-setup", newController.EndcSetupHandler).Methods("POST") +}