func startResourceLimiterService(internalRLSChan, internalCdrStatSChan chan rpcclient.RpcClientConnection, cfg *config.CGRConfig, accountDb engine.AccountingStorage, server *utils.Server, exitChan chan bool) { var statsConn *rpcclient.RpcClientPool if len(cfg.ResourceLimiterCfg().CDRStatConns) != 0 { // Stats connection init statsConn, err = engine.NewRPCPool(rpcclient.POOL_FIRST, cfg.ConnectAttempts, cfg.Reconnects, cfg.ConnectTimeout, cfg.ReplyTimeout, cfg.ResourceLimiterCfg().CDRStatConns, internalCdrStatSChan, cfg.InternalTtl) if err != nil { utils.Logger.Crit(fmt.Sprintf("<RLs> Could not connect to StatS: %s", err.Error())) exitChan <- true return } } rls, err := engine.NewResourceLimiterService(cfg, accountDb, statsConn) if err != nil { utils.Logger.Crit(fmt.Sprintf("<RLs> Could not init, error: %s", err.Error())) exitChan <- true return } utils.Logger.Info(fmt.Sprintf("Starting ResourceLimiter service")) if err := rls.ListenAndServe(); err != nil { utils.Logger.Crit(fmt.Sprintf("<RLs> Could not start, error: %s", err.Error())) exitChan <- true return } server.RpcRegisterName("RLsV1", rls) internalRLSChan <- rls }
func NewDiameterAgent(cgrCfg *config.CGRConfig, smg *rpcclient.RpcClient, pubsubs *rpcclient.RpcClient) (*DiameterAgent, error) { da := &DiameterAgent{cgrCfg: cgrCfg, smg: smg, pubsubs: pubsubs} dictsDir := cgrCfg.DiameterAgentCfg().DictionariesDir if len(dictsDir) != 0 { if err := loadDictionaries(dictsDir, "DiameterAgent"); err != nil { return nil, err } } return da, nil }
func NewDiameterAgent(cgrCfg *config.CGRConfig, smg rpcclient.RpcClientConnection, pubsubs rpcclient.RpcClientConnection) (*DiameterAgent, error) { da := &DiameterAgent{cgrCfg: cgrCfg, smg: smg, pubsubs: pubsubs, ccrQueue: make(chan *DiameterMessage, CCRQueueLen)} dictsDir := cgrCfg.DiameterAgentCfg().DictionariesDir if len(dictsDir) != 0 { if err := loadDictionaries(dictsDir, "DiameterAgent"); err != nil { return nil, err } } go da.ccrServer() return da, nil }
func NewDiameterAgent(cgrCfg *config.CGRConfig, smg rpcclient.RpcClientConnection, pubsubs rpcclient.RpcClientConnection) (*DiameterAgent, error) { da := &DiameterAgent{cgrCfg: cgrCfg, smg: smg, pubsubs: pubsubs, connMux: new(sync.Mutex)} if reflect.ValueOf(da.pubsubs).IsNil() { da.pubsubs = nil // Empty it so we can check it later } dictsDir := cgrCfg.DiameterAgentCfg().DictionariesDir if len(dictsDir) != 0 { if err := loadDictionaries(dictsDir, "DiameterAgent"); err != nil { return nil, err } } return da, nil }