mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-21 23:28:44 +05:00
Merge branch 'master' of https://github.com/cgrates/cgrates
This commit is contained in:
@@ -39,6 +39,7 @@ import (
|
||||
"github.com/cgrates/cgrates/scheduler"
|
||||
"github.com/cgrates/cgrates/servmanager"
|
||||
"github.com/cgrates/cgrates/sessionmanager"
|
||||
"github.com/cgrates/cgrates/stats"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
"github.com/cgrates/rpcclient"
|
||||
)
|
||||
@@ -545,9 +546,32 @@ func startResourceLimiterService(internalRLSChan, internalCdrStatSChan chan rpcc
|
||||
internalRLSChan <- rlsV1
|
||||
}
|
||||
|
||||
// startStatService fires up the StatS
|
||||
func startStatService(internalStatSChan chan rpcclient.RpcClientConnection, cfg *config.CGRConfig,
|
||||
dataDB engine.DataDB, ms engine.Marshaler, server *utils.Server, exitChan chan bool) {
|
||||
sts, err := stats.NewStatService(dataDB, ms, cfg.StatSCfg().StoreInterval)
|
||||
if err != nil {
|
||||
utils.Logger.Crit(fmt.Sprintf("<StatS> Could not init, error: %s", err.Error()))
|
||||
exitChan <- true
|
||||
return
|
||||
}
|
||||
utils.Logger.Info(fmt.Sprintf("Starting Stat service"))
|
||||
go func() {
|
||||
if err := sts.ListenAndServe(exitChan); err != nil {
|
||||
utils.Logger.Crit(fmt.Sprintf("<StatS> Error: %s listening for packets", err.Error()))
|
||||
}
|
||||
sts.Shutdown()
|
||||
exitChan <- true
|
||||
return
|
||||
}()
|
||||
stsV1 := v1.NewStatSV1(sts)
|
||||
server.RpcRegister(stsV1)
|
||||
internalStatSChan <- stsV1
|
||||
}
|
||||
|
||||
func startRpc(server *utils.Server, internalRaterChan,
|
||||
internalCdrSChan, internalCdrStatSChan, internalHistorySChan, internalPubSubSChan, internalUserSChan,
|
||||
internalAliaseSChan, internalRLsChan chan rpcclient.RpcClientConnection, internalSMGChan chan *sessionmanager.SMGeneric) {
|
||||
internalAliaseSChan, internalRLsChan, internalStatSChan chan rpcclient.RpcClientConnection, internalSMGChan chan *sessionmanager.SMGeneric) {
|
||||
select { // Any of the rpc methods will unlock listening to rpc requests
|
||||
case resp := <-internalRaterChan:
|
||||
internalRaterChan <- resp
|
||||
@@ -567,6 +591,8 @@ func startRpc(server *utils.Server, internalRaterChan,
|
||||
internalSMGChan <- smg
|
||||
case rls := <-internalRLsChan:
|
||||
internalRLsChan <- rls
|
||||
case statS := <-internalStatSChan:
|
||||
internalStatSChan <- statS
|
||||
}
|
||||
go server.ServeJSON(cfg.RPCJSONListen)
|
||||
go server.ServeGOB(cfg.RPCGOBListen)
|
||||
@@ -656,6 +682,17 @@ func main() {
|
||||
// Init cache
|
||||
cache.NewCache(cfg.CacheConfig)
|
||||
|
||||
var ms engine.Marshaler
|
||||
if ms, err = engine.NewMarshaler(cfg.DBDataEncoding); err != nil {
|
||||
log.Fatalf("error initializing marshaler: ", err)
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
utils.Logger.Crit(fmt.Sprintf("<StatS> Could not start, error: %s", err.Error()))
|
||||
exitChan <- true
|
||||
return
|
||||
}
|
||||
|
||||
var dataDB engine.DataDB
|
||||
var loadDb engine.LoadStorage
|
||||
var cdrDb engine.CdrStorage
|
||||
@@ -709,6 +746,7 @@ func main() {
|
||||
internalAliaseSChan := make(chan rpcclient.RpcClientConnection, 1)
|
||||
internalSMGChan := make(chan *sessionmanager.SMGeneric, 1)
|
||||
internalRLSChan := make(chan rpcclient.RpcClientConnection, 1)
|
||||
internalStatSChan := make(chan rpcclient.RpcClientConnection, 1)
|
||||
|
||||
// Start ServiceManager
|
||||
srvManager := servmanager.NewServiceManager(cfg, dataDB, exitChan, cacheDoneChan)
|
||||
@@ -802,9 +840,13 @@ func main() {
|
||||
go startResourceLimiterService(internalRLSChan, internalCdrStatSChan, cfg, dataDB, server, exitChan)
|
||||
}
|
||||
|
||||
if cfg.StatSCfg().Enabled {
|
||||
go startStatService(internalStatSChan, cfg, dataDB, ms, server, exitChan)
|
||||
}
|
||||
|
||||
// Serve rpc connections
|
||||
go startRpc(server, internalRaterChan, internalCdrSChan, internalCdrStatSChan, internalHistorySChan,
|
||||
internalPubSubSChan, internalUserSChan, internalAliaseSChan, internalRLSChan, internalSMGChan)
|
||||
internalPubSubSChan, internalUserSChan, internalAliaseSChan, internalRLSChan, internalStatSChan, internalSMGChan)
|
||||
<-exitChan
|
||||
|
||||
if *pidFile != "" {
|
||||
|
||||
Reference in New Issue
Block a user