diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index b76c354f5..dda7ff30b 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -126,94 +126,52 @@ func runCGREngine(fs []string) (err error) { // ServiceIndexer will share service references to all services registry := servmanager.NewServiceRegistry() - gvS := services.NewGlobalVarS(cfg) - caps := services.NewCapService(cfg) - cls := services.NewCommonListenerService(cfg) - anzS := services.NewAnalyzerService(cfg) - cms := services.NewConnManagerService(cfg) - lgs := services.NewLoggerService(cfg, *flags.Logger) - dmS := services.NewDataDBService(cfg, *flags.SetVersions) - sdbS := services.NewStorDBService(cfg, *flags.SetVersions) - configS := services.NewConfigService(cfg) - guardianS := services.NewGuardianService(cfg) coreS := services.NewCoreService(cfg, cpuPrfF, shdWg) - cacheS := services.NewCacheService(cfg) - fltrS := services.NewFilterService(cfg) - dspS := services.NewDispatcherService(cfg) - ldrs := services.NewLoaderService(cfg) - efs := services.NewExportFailoverService(cfg) - adminS := services.NewAdminSv1Service(cfg) - sessionS := services.NewSessionService(cfg) - attrS := services.NewAttributeService(cfg, dspS) - chrgS := services.NewChargerService(cfg) - routeS := services.NewRouteService(cfg) - resourceS := services.NewResourceService(cfg) - trendS := services.NewTrendService(cfg) - rankingS := services.NewRankingService(cfg) - thS := services.NewThresholdService(cfg) - stS := services.NewStatService(cfg) - erS := services.NewEventReaderService(cfg) - dnsAgent := services.NewDNSAgent(cfg) - fsAgent := services.NewFreeswitchAgent(cfg) - kamAgent := services.NewKamailioAgent(cfg) - janusAgent := services.NewJanusAgent(cfg) - astAgent := services.NewAsteriskAgent(cfg) - radAgent := services.NewRadiusAgent(cfg) - diamAgent := services.NewDiameterAgent(cfg) - httpAgent := services.NewHTTPAgent(cfg) - sipAgent := services.NewSIPAgent(cfg) - eeS := services.NewEventExporterService(cfg) - cdrS := services.NewCDRServer(cfg) - registrarcS := services.NewRegistrarCService(cfg) - rateS := services.NewRateService(cfg) - actionS := services.NewActionService(cfg) - accS := services.NewAccountService(cfg) - tpeS := services.NewTPeService(cfg) srvManager := servmanager.NewServiceManager(shdWg, cfg, registry, []servmanager.Service{ - gvS, - caps, - cls, - anzS, - cms, - lgs, - dmS, - sdbS, - configS, - guardianS, + services.NewGlobalVarS(cfg), + services.NewCapService(cfg), + services.NewCommonListenerService(cfg), + services.NewAnalyzerService(cfg), + services.NewConnManagerService(cfg), + services.NewLoggerService(cfg, *flags.Logger), + services.NewDataDBService(cfg, *flags.SetVersions), + services.NewStorDBService(cfg, *flags.SetVersions), + services.NewConfigService(cfg), + services.NewGuardianService(cfg), coreS, - cacheS, - fltrS, - dspS, - ldrs, - efs, - adminS, - sessionS, - attrS, - chrgS, - routeS, - resourceS, - trendS, - rankingS, - thS, - stS, - erS, - dnsAgent, - fsAgent, - kamAgent, - janusAgent, - astAgent, - radAgent, - diamAgent, - httpAgent, - sipAgent, - eeS, - cdrS, - registrarcS, - rateS, - actionS, - accS, - tpeS, + services.NewCacheService(cfg), + services.NewFilterService(cfg), + services.NewDispatcherService(cfg), + services.NewLoaderService(cfg), + services.NewExportFailoverService(cfg), + services.NewAdminSv1Service(cfg), + services.NewSessionService(cfg), + services.NewAttributeService(cfg), + services.NewChargerService(cfg), + services.NewRouteService(cfg), + services.NewResourceService(cfg), + services.NewTrendService(cfg), + services.NewRankingService(cfg), + services.NewThresholdService(cfg), + services.NewStatService(cfg), + services.NewEventReaderService(cfg), + services.NewDNSAgent(cfg), + services.NewFreeswitchAgent(cfg), + services.NewKamailioAgent(cfg), + services.NewJanusAgent(cfg), + services.NewAsteriskAgent(cfg), + services.NewRadiusAgent(cfg), + services.NewDiameterAgent(cfg), + services.NewHTTPAgent(cfg), + services.NewSIPAgent(cfg), + services.NewEventExporterService(cfg), + services.NewCDRServer(cfg), + services.NewRegistrarCService(cfg), + services.NewRateService(cfg), + services.NewActionService(cfg), + services.NewAccountService(cfg), + services.NewTPeService(cfg), }) defer func() { diff --git a/services/attributes.go b/services/attributes.go index 783e414b3..e14be5b36 100644 --- a/services/attributes.go +++ b/services/attributes.go @@ -30,11 +30,9 @@ import ( ) // NewAttributeService returns the Attribute Service -func NewAttributeService(cfg *config.CGRConfig, - dspS *DispatcherService) *AttributeService { +func NewAttributeService(cfg *config.CGRConfig) *AttributeService { return &AttributeService{ cfg: cfg, - dspS: dspS, stateDeps: NewStateDependencies([]string{utils.StateServiceUP, utils.StateServiceDOWN}), } } @@ -44,8 +42,6 @@ type AttributeService struct { sync.RWMutex cfg *config.CGRConfig - dspS *DispatcherService - attrS *engine.AttributeS cl *commonlisteners.CommonListenerS rpc *apis.AttributeSv1 // useful on restart @@ -75,12 +71,12 @@ func (attrS *AttributeService) Start(shutdown *utils.SyncedChan, registry *servm utils.CacheAttributeFilterIndexes); err != nil { return } - fs := srvDeps[utils.FilterS].(*FilterService) - dbs := srvDeps[utils.DataDB].(*DataDBService) + fs := srvDeps[utils.FilterS].(*FilterService).FilterS() + dm := srvDeps[utils.DataDB].(*DataDBService).DataManager() attrS.Lock() defer attrS.Unlock() - attrS.attrS = engine.NewAttributeService(dbs.DataManager(), fs.FilterS(), attrS.cfg) + attrS.attrS = engine.NewAttributeService(dm, fs, attrS.cfg) attrS.rpc = apis.NewAttributeSv1(attrS.attrS) srv, _ := engine.NewService(attrS.rpc) // srv, _ := birpc.NewService(attrS.rpc, "", false) @@ -89,7 +85,8 @@ func (attrS *AttributeService) Start(shutdown *utils.SyncedChan, registry *servm attrS.cl.RpcRegister(s) } } - dspShtdChan := attrS.dspS.RegisterShutdownChan(attrS.ServiceName()) + dsps := registry.Lookup(utils.DispatcherS).(*DispatcherService) + dspShtdChan := dsps.RegisterShutdownChan(attrS.ServiceName()) go func() { for { if _, closed := <-dspShtdChan; closed { @@ -111,12 +108,11 @@ func (attrS *AttributeService) Reload(_ *utils.SyncedChan, _ *servmanager.Servic } // Shutdown stops the service -func (attrS *AttributeService) Shutdown(_ *servmanager.ServiceRegistry) (err error) { +func (attrS *AttributeService) Shutdown(registry *servmanager.ServiceRegistry) (err error) { attrS.Lock() - attrS.attrS = nil - attrS.rpc = nil attrS.cl.RpcUnregisterName(utils.AttributeSv1) - attrS.dspS.UnregisterShutdownChan(attrS.ServiceName()) + dsps := registry.Lookup(utils.DispatcherS).(*DispatcherService) + dsps.UnregisterShutdownChan(attrS.ServiceName()) attrS.Unlock() return }