X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fxapp%2Fxapp.go;h=0ae9b02c0e51a8c017bda4f0d1124b0e5818bdb7;hb=refs%2Ftags%2Fv0.4.7;hp=d796afe95e31a1481bfc34d3b5e40dc91ff2392e;hpb=2e78e42c5896b61b77ab3a97e45704f6749161b2;p=ric-plt%2Fxapp-frame.git diff --git a/pkg/xapp/xapp.go b/pkg/xapp/xapp.go index d796afe..0ae9b02 100755 --- a/pkg/xapp/xapp.go +++ b/pkg/xapp/xapp.go @@ -25,35 +25,56 @@ import ( "net/http" ) +type ReadyCB func(interface{}) + var ( // XApp is an application instance - Rmr *RMRClient - Sdl *SDLClient - UeNib *UENIBClient - Rnib *RNIBClient - Resource *Router - Metric *Metrics - Logger Log - Config Configurator + Rmr *RMRClient + Sdl *SDLClient + Rnib *RNIBClient + Resource *Router + Metric *Metrics + Logger *Log + Config Configurator + Subscription *Subscriber + Alarm *AlarmClient + readyCb ReadyCB + readyCbParams interface{} ) +func IsReady() bool { + return Rmr != nil && Rmr.IsReady() && Sdl != nil && Sdl.IsReady() +} + +func SetReadyCB(cb ReadyCB, params interface{}) { + readyCb = cb + readyCbParams = params +} + +func xappReadyCb(params interface{}) { + Alarm = NewAlarmClient(viper.GetString("alarm.MOId"), viper.GetString("alarm.APPId")) + + if readyCb != nil { + readyCb(readyCbParams) + } +} + func init() { // Load xapp configuration Logger = LoadConfig() Logger.SetLevel(viper.GetInt("logger.level")) - Rmr = NewRMRClient() Resource = NewRouter() Config = Configurator{} - UeNib = NewUENIBClient() Metric = NewMetrics(viper.GetString("metrics.url"), viper.GetString("metrics.namespace"), Resource.router) + Subscription = NewSubscriber(viper.GetString("subscription.host"), viper.GetInt("subscription.timeout")) if viper.IsSet("db.namespaces") { namespaces := viper.GetStringSlice("db.namespaces") - if namespaces[0] != "" { + if len(namespaces) > 0 && namespaces[0] != "" { Sdl = NewSDLClient(viper.GetStringSlice("db.namespaces")[0]) } - if namespaces[1] != "" { + if len(namespaces) > 1 && namespaces[1] != "" { Rnib = NewRNIBClient(viper.GetStringSlice("db.namespaces")[1]) } } else { @@ -61,11 +82,17 @@ func init() { } } -func Run(c MessageConsumer) { +func RunWithParams(c MessageConsumer, sdlcheck bool) { + Rmr = NewRMRClient() + Rmr.SetReadyCB(xappReadyCb, nil) go http.ListenAndServe(viper.GetString("local.host"), Resource.router) - Logger.Info(fmt.Sprintf("Xapp started, listening on: %s", viper.GetString("local.host"))) - - Sdl.TestConnection() + if sdlcheck { + Sdl.TestConnection() + } Rmr.Start(c) } + +func Run(c MessageConsumer) { + RunWithParams(c, true) +}