small corrections

This commit is contained in:
Radu Ioan Fericean
2012-07-12 20:04:10 +03:00
parent b92692439a
commit e2e7a5579f
5 changed files with 19 additions and 15 deletions

View File

@@ -53,7 +53,7 @@ func GetCallCost(key *timespans.CallDescriptor, method string) (reply *timespans
time.Sleep(1 * time.Second) // wait one second and retry
} else {
reply = &timespans.CallCost{}
reply, err = timespans.AccLock.GuardGetCost(key.GetKey(), func() (*timespans.CallCost, error) {
reply, err = accLock.GuardGetCost(key.GetKey(), func() (*timespans.CallCost, error) {
err = client.Call(method, *key, reply)
return reply, err
})
@@ -76,7 +76,7 @@ func CallMethod(key *timespans.CallDescriptor, method string) (reply float64, er
log.Print("Waiting for raters to register...")
time.Sleep(1 * time.Second) // wait one second and retry
} else {
reply, err = timespans.AccLock.Guard(key.GetKey(), func() (float64, error) {
reply, err = accLock.Guard(key.GetKey(), func() (float64, error) {
err = client.Call(method, *key, &reply)
return reply, err
})

View File

@@ -56,7 +56,7 @@ func NewStorage(nsg timespans.StorageGetter) *Responder {
RPC method providing the rating information from the storage.
*/
func (s *Responder) GetCost(cd timespans.CallDescriptor, reply *timespans.CallCost) (err error) {
r, e := timespans.AccLock.GuardGetCost(cd.GetKey(), func() (*timespans.CallCost, error) {
r, e := timespans.AccLock.GuardGetCost(cd.GetUserBalanceKey(), func() (*timespans.CallCost, error) {
return (&cd).GetCost()
})
*reply, err = *r, e
@@ -64,7 +64,7 @@ func (s *Responder) GetCost(cd timespans.CallDescriptor, reply *timespans.CallCo
}
func (s *Responder) DebitCents(cd timespans.CallDescriptor, reply *float64) (err error) {
r, e := timespans.AccLock.Guard(cd.GetKey(), func() (float64, error) {
r, e := timespans.AccLock.Guard(cd.GetUserBalanceKey(), func() (float64, error) {
return (&cd).DebitCents()
})
*reply, err = r, e
@@ -72,7 +72,7 @@ func (s *Responder) DebitCents(cd timespans.CallDescriptor, reply *float64) (err
}
func (s *Responder) DebitSMS(cd timespans.CallDescriptor, reply *float64) (err error) {
r, e := timespans.AccLock.Guard(cd.GetKey(), func() (float64, error) {
r, e := timespans.AccLock.Guard(cd.GetUserBalanceKey(), func() (float64, error) {
return (&cd).DebitSMS()
})
*reply, err = r, e
@@ -80,7 +80,7 @@ func (s *Responder) DebitSMS(cd timespans.CallDescriptor, reply *float64) (err e
}
func (s *Responder) DebitSeconds(cd timespans.CallDescriptor, reply *float64) (err error) {
r, e := timespans.AccLock.Guard(cd.GetKey(), func() (float64, error) {
r, e := timespans.AccLock.Guard(cd.GetUserBalanceKey(), func() (float64, error) {
return 0, (&cd).DebitSeconds()
})
*reply, err = r, e
@@ -88,7 +88,7 @@ func (s *Responder) DebitSeconds(cd timespans.CallDescriptor, reply *float64) (e
}
func (s *Responder) GetMaxSessionTime(cd timespans.CallDescriptor, reply *float64) (err error) {
r, e := timespans.AccLock.Guard(cd.GetKey(), func() (float64, error) {
r, e := timespans.AccLock.Guard(cd.GetUserBalanceKey(), func() (float64, error) {
return (&cd).GetMaxSessionTime()
})
*reply, err = r, e
@@ -96,7 +96,7 @@ func (s *Responder) GetMaxSessionTime(cd timespans.CallDescriptor, reply *float6
}
func (s *Responder) AddRecievedCallSeconds(cd timespans.CallDescriptor, reply *float64) (err error) {
r, e := timespans.AccLock.Guard(cd.GetKey(), func() (float64, error) {
r, e := timespans.AccLock.Guard(cd.GetUserBalanceKey(), func() (float64, error) {
return 0, (&cd).AddRecievedCallSeconds()
})
*reply, err = r, e

View File

@@ -150,7 +150,6 @@ func (at *ActionTiming) getUserBalances() (ubs []*UserBalance) {
}
func (at *ActionTiming) Execute() (err error) {
aac, err := at.getActions()
if err != nil {
log.Print("Failed to get actions: ", err)

View File

@@ -86,17 +86,21 @@ func (cd *CallDescriptor) AddActivationPeriodIfNotPresent(aps ...*ActivationPeri
}
}
// Returns the key used to retrive the user balance involved in this call
func (cd *CallDescriptor) GetUserBalanceKey() string {
subj := cd.Subject
if cd.Account != "" {
subj = cd.Account
}
return fmt.Sprintf("%s:%s:%s", cd.Direction, cd.Tenant, subj)
}
/*
Gets and caches the user balance information.
*/
func (cd *CallDescriptor) getUserBalance() (ub *UserBalance, err error) {
if cd.userBalance == nil {
subj := cd.Subject
if cd.Account != "" {
subj = cd.Account
}
key := fmt.Sprintf("%s:%s:%s", cd.Direction, cd.Tenant, subj)
cd.userBalance, err = storageGetter.GetUserBalance(key)
cd.userBalance, err = storageGetter.GetUserBalance(cd.GetUserBalanceKey())
}
return cd.userBalance, err
}

View File

@@ -251,6 +251,7 @@ func (ub *UserBalance) countUnits(a *Action) {
ub.executeActionTriggers()
}
// Create minute counters for all triggered actions that have actions operating on minute buckets
func (ub *UserBalance) initMinuteCounters() {
ucTempMap := make(map[string]*UnitsCounter, 2)
for _, at := range ub.ActionTriggers {