SessionS with dynamic DebitInterval

This commit is contained in:
DanB
2018-12-10 17:47:34 +01:00
parent bd39ac940e
commit 44c6ec2275
2 changed files with 25 additions and 6 deletions

View File

@@ -1928,10 +1928,16 @@ func (smg *SMGeneric) BiRPCv1InitiateSession(clnt rpcclient.RpcClientConnection,
return utils.NewErrMandatoryIeMissing(utils.OriginID)
}
}
ev := engine.NewSafEvent(args.CGREvent.Event)
dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval
if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval
if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil {
return utils.NewErrRALs(err)
}
}
if maxUsage, err := smg.InitiateSession(
args.CGREvent.Tenant,
engine.NewSafEvent(args.CGREvent.Event), clnt, originID,
smg.cgrCfg.SessionSCfg().DebitInterval); err != nil {
ev, clnt, originID, dbtItvl); err != nil {
return utils.NewErrRALs(err)
} else {
rply.MaxUsage = &maxUsage
@@ -2089,9 +2095,15 @@ func (smg *SMGeneric) BiRPCv1UpdateSession(clnt rpcclient.RpcClientConnection,
if err != nil {
return utils.NewErrMandatoryIeMissing(utils.OriginID)
}
ev := engine.NewSafEvent(args.CGREvent.Event)
dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval
if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval
if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil {
return utils.NewErrRALs(err)
}
}
if maxUsage, err := smg.UpdateSession(args.CGREvent.Tenant,
engine.NewSafEvent(args.CGREvent.Event), clnt, originID,
smg.cgrCfg.SessionSCfg().DebitInterval); err != nil {
ev, clnt, originID, dbtItvl); err != nil {
return utils.NewErrRALs(err)
} else {
rply.MaxUsage = &maxUsage
@@ -2138,9 +2150,15 @@ func (smg *SMGeneric) BiRPCv1TerminateSession(clnt rpcclient.RpcClientConnection
if err != nil {
return utils.NewErrMandatoryIeMissing(utils.OriginID)
}
ev := engine.NewSafEvent(args.CGREvent.Event)
dbtItvl := smg.cgrCfg.SessionSCfg().DebitInterval
if ev.HasField(utils.CGRDebitInterval) { // dynamic DebitInterval via CGRDebitInterval
if dbtItvl, err = ev.GetDuration(utils.CGRDebitInterval); err != nil {
return utils.NewErrRALs(err)
}
}
if err = smg.TerminateSession(args.CGREvent.Tenant,
engine.NewSafEvent(args.CGREvent.Event), clnt, originID,
smg.cgrCfg.SessionSCfg().DebitInterval); err != nil {
ev, clnt, originID, dbtItvl); err != nil {
return utils.NewErrRALs(err)
}
}

View File

@@ -538,6 +538,7 @@ const (
MetaRemoteHost = "*remote_host"
Local = "local"
TCP = "tcp"
CGRDebitInterval = "CGRDebitInterval"
)
// Migrator Action