Add Wrapper for CallDescriptor

This commit is contained in:
TeoV
2019-04-08 12:46:58 -04:00
committed by Dan Christian Bogos
parent 22250fe9cc
commit edb2f6ab97
12 changed files with 71 additions and 63 deletions

View File

@@ -171,7 +171,6 @@ type CallDescriptor struct {
DenyNegativeAccount bool // prevent account going on negative during debit
account *Account
testCallcost *CallCost // testing purpose only!
*utils.ArgDispatcher
}
// AsCGREvent converts the CallDescriptor into CGREvent
@@ -1067,3 +1066,8 @@ func (cd *CallDescriptor) AsNavigableMap(tpl []*config.FCTemplate) (nM *config.N
func (cd *CallDescriptor) RemoteHost() net.Addr {
return utils.LocalAddr()
}
type CallDescriptorWithArgDispatcher struct {
*CallDescriptor
*utils.ArgDispatcher
}

View File

@@ -889,3 +889,8 @@ type ExternalCDRWithArgDispatcher struct {
*ExternalCDR
*utils.ArgDispatcher
}
type UsageRecordWithArgDispatcher struct {
*UsageRecord
*utils.ArgDispatcher
}

View File

@@ -220,14 +220,13 @@ func (cdrS *CDRServer) getCostFromRater(cdr *CDRWithArgDispatcher) (*CallCost, e
DurationIndex: cdr.Usage,
PerformRounding: true,
}
if cdr.ArgDispatcher != nil {
cd.ArgDispatcher = cdr.ArgDispatcher
}
if utils.IsSliceMember([]string{utils.META_PSEUDOPREPAID, utils.META_POSTPAID, utils.META_PREPAID,
utils.PSEUDOPREPAID, utils.POSTPAID, utils.PREPAID}, cdr.RequestType) { // Prepaid - Cost can be recalculated in case of missing records from SM
err = cdrS.rals.Call("Responder.Debit", cd, cc)
err = cdrS.rals.Call(utils.ResponderDebit, &CallDescriptorWithArgDispatcher{CallDescriptor: cd,
ArgDispatcher: cdr.ArgDispatcher}, cc)
} else {
err = cdrS.rals.Call("Responder.GetCost", cd, cc)
err = cdrS.rals.Call(utils.ResponderGetCost, &CallDescriptorWithArgDispatcher{CallDescriptor: cd,
ArgDispatcher: cdr.ArgDispatcher}, cc)
}
if err != nil {
return cc, err

View File

@@ -60,7 +60,7 @@ func (rs *Responder) usageAllowed(tor string, reqUsage time.Duration) (allowed b
/*
RPC method thet provides the external RPC interface for getting the rating information.
*/
func (rs *Responder) GetCost(arg *CallDescriptor, reply *CallCost) (err error) {
func (rs *Responder) GetCost(arg *CallDescriptorWithArgDispatcher, reply *CallCost) (err error) {
if arg.Tenant == "" {
arg.Tenant = config.CgrConfig().GeneralCfg().DefaultTenant
}
@@ -85,7 +85,7 @@ func (rs *Responder) GetCost(arg *CallDescriptor, reply *CallCost) (err error) {
return
}
func (rs *Responder) Debit(arg *CallDescriptor, reply *CallCost) (err error) {
func (rs *Responder) Debit(arg *CallDescriptorWithArgDispatcher, reply *CallCost) (err error) {
// RPC caching
if config.CgrConfig().CacheCfg()[utils.CacheRPCResponses].Limit != 0 {
cacheKey := utils.ConcatenatedKey(utils.ResponderDebit, arg.CgrID)
@@ -123,7 +123,7 @@ func (rs *Responder) Debit(arg *CallDescriptor, reply *CallCost) (err error) {
return
}
func (rs *Responder) MaxDebit(arg *CallDescriptor, reply *CallCost) (err error) {
func (rs *Responder) MaxDebit(arg *CallDescriptorWithArgDispatcher, reply *CallCost) (err error) {
// RPC caching
if config.CgrConfig().CacheCfg()[utils.CacheRPCResponses].Limit != 0 {
cacheKey := utils.ConcatenatedKey(utils.ResponderMaxDebit, arg.CgrID)
@@ -161,7 +161,7 @@ func (rs *Responder) MaxDebit(arg *CallDescriptor, reply *CallCost) (err error)
return
}
func (rs *Responder) RefundIncrements(arg *CallDescriptor, reply *Account) (err error) {
func (rs *Responder) RefundIncrements(arg *CallDescriptorWithArgDispatcher, reply *Account) (err error) {
// RPC caching
if config.CgrConfig().CacheCfg()[utils.CacheRPCResponses].Limit != 0 {
cacheKey := utils.ConcatenatedKey(utils.ResponderRefundIncrements, arg.CgrID)
@@ -199,7 +199,7 @@ func (rs *Responder) RefundIncrements(arg *CallDescriptor, reply *Account) (err
return
}
func (rs *Responder) RefundRounding(arg *CallDescriptor, reply *float64) (err error) {
func (rs *Responder) RefundRounding(arg *CallDescriptorWithArgDispatcher, reply *float64) (err error) {
// RPC caching
if config.CgrConfig().CacheCfg()[utils.CacheRPCResponses].Limit != 0 {
cacheKey := utils.ConcatenatedKey(utils.ResponderRefundRounding, arg.CgrID)
@@ -230,7 +230,7 @@ func (rs *Responder) RefundRounding(arg *CallDescriptor, reply *float64) (err er
return
}
func (rs *Responder) GetMaxSessionTime(arg *CallDescriptor, reply *time.Duration) (err error) {
func (rs *Responder) GetMaxSessionTime(arg *CallDescriptorWithArgDispatcher, reply *time.Duration) (err error) {
if arg.Subject == "" {
arg.Subject = arg.Account
}