X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmain%2Fhttp_server.go;fp=E2Manager%2Fmain%2Fhttp_server.go;h=037dd1b789ef0be16c9311d935d83bc9e7eef4e8;hb=07ef76dd471a0892a893c90e0ab06713aee34be1;hp=0000000000000000000000000000000000000000;hpb=59f84608ec15c016958a6e0e0ddd813f376c0925;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/main/http_server.go b/E2Manager/main/http_server.go new file mode 100644 index 0000000..037dd1b --- /dev/null +++ b/E2Manager/main/http_server.go @@ -0,0 +1,79 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package main + +import ( + "e2mgr/configuration" + "e2mgr/controllers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/julienschmidt/httprouter" + "log" + "net/http" + "os" +) + +const MAX_RNIB_PULL_INSTANCES = 4 + +func main() { + config := configuration.ParseConfiguration() + logLevel, _ := logger.LogLevelTokenToLevel(config.Logging.LogLevel) + logger, err := logger.InitLogger(logLevel) + if err != nil { + fmt.Printf("#http_server.main - failed to initialize logger, error: %s", err) + os.Exit(1) + } + rmrConfig := services.NewRmrConfig(config.Rmr.Port, config.Rmr.MaxMsgSize, 0, logger) + var msgImpl *rmrCgo.Context + rNibWriter.Init("e2Manager", MAX_RNIB_PULL_INSTANCES) + defer rNibWriter.Close() + reader.Init("e2Manager", MAX_RNIB_PULL_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, nManager, rmrResponseChannel) + defer rmrService.CloseContext() + go rmrService.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, reader.GetRNibReader, rNibWriter.GetRNibWriter, config, rmrResponseChannel) + + 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) + + port := fmt.Sprintf(":%d", config.Http.Port) + if err := http.ListenAndServe(port, router); err != nil { + log.Fatalf("#runNodebServer - fail to start http server. Error: %v", err) + } +} \ No newline at end of file