mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 00:58:45 +05:00
Add Wrapper for CallDescriptor
This commit is contained in:
committed by
Dan Christian Bogos
parent
22250fe9cc
commit
edb2f6ab97
@@ -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
|
||||
}
|
||||
|
||||
@@ -889,3 +889,8 @@ type ExternalCDRWithArgDispatcher struct {
|
||||
*ExternalCDR
|
||||
*utils.ArgDispatcher
|
||||
}
|
||||
|
||||
type UsageRecordWithArgDispatcher struct {
|
||||
*UsageRecord
|
||||
*utils.ArgDispatcher
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user