added cache entries count and added prefix for cache keys

This commit is contained in:
Radu Ioan Fericean
2013-12-05 13:07:57 +02:00
parent f0fbe79fca
commit 3257010f32
4 changed files with 34 additions and 11 deletions

View File

@@ -3,6 +3,7 @@ package cache2go
import (
"errors"
"strings"
"sync"
"time"
)
@@ -139,3 +140,21 @@ func Flush() {
defer mux.Unlock()
cache = make(map[string]timestampedValue)
}
func CountEntries(prefix string) (result int) {
for key, _ := range cache {
if strings.HasPrefix(key, prefix) {
result++
}
}
return
}
func XCountEntries(prefix string) (result int) {
for key, _ := range xcache {
if strings.HasPrefix(key, prefix) {
result++
}
}
return
}

View File

@@ -84,7 +84,7 @@ func TestDestinationGetExists(t *testing.T) {
func TestDestinationGetExistsCache(t *testing.T) {
storageGetter.GetDestination("NAT", false)
if _, err := cache2go.GetCached("NAT"); err != nil {
if _, err := cache2go.GetCached(DESTINATION_PREFIX + "NAT"); err != nil {
t.Error("Destination not cached:", err)
}
}

View File

@@ -22,11 +22,11 @@ import (
"errors"
"fmt"
"strings"
"time"
"github.com/cgrates/cgrates/cache2go"
"github.com/cgrates/cgrates/history"
"github.com/cgrates/cgrates/utils"
"strings"
"time"
)
type MapStorage struct {
@@ -79,13 +79,14 @@ func (ms *MapStorage) ExistsData(categ, subject string) (bool, error) {
}
func (ms *MapStorage) GetRatingPlan(key string, checkDb bool) (rp *RatingPlan, err error) {
key = RATING_PLAN_PREFIX + key
if x, err := cache2go.GetCached(key); err == nil {
return x.(*RatingPlan), nil
}
if !checkDb {
return nil, errors.New(utils.ERR_NOT_FOUND)
}
if values, ok := ms.dict[RATING_PLAN_PREFIX+key]; ok {
if values, ok := ms.dict[key]; ok {
rp = new(RatingPlan)
err = ms.ms.Unmarshal(values, rp)
@@ -101,7 +102,7 @@ func (ms *MapStorage) SetRatingPlan(rp *RatingPlan) (err error) {
ms.dict[RATING_PLAN_PREFIX+rp.Id] = result
response := 0
go historyScribe.Record(&history.Record{RATING_PLAN_PREFIX + rp.Id, rp}, &response)
cache2go.Cache(rp.Id, rp)
cache2go.Cache(RATING_PLAN_PREFIX+rp.Id, rp)
return
}
@@ -125,13 +126,14 @@ func (ms *MapStorage) SetRatingProfile(rp *RatingProfile) (err error) {
}
func (ms *MapStorage) GetDestination(key string, checkDb bool) (dest *Destination, err error) {
key = DESTINATION_PREFIX + key
if x, err := cache2go.GetCached(key); err == nil {
return x.(*Destination), nil
}
if !checkDb {
return nil, errors.New(utils.ERR_NOT_FOUND)
}
if values, ok := ms.dict[DESTINATION_PREFIX+key]; ok {
if values, ok := ms.dict[key]; ok {
dest = &Destination{Id: key}
err = ms.ms.Unmarshal(values, dest)
cache2go.Cache(key, dest)
@@ -146,7 +148,7 @@ func (ms *MapStorage) SetDestination(dest *Destination) (err error) {
ms.dict[DESTINATION_PREFIX+dest.Id] = result
response := 0
go historyScribe.Record(&history.Record{DESTINATION_PREFIX + dest.Id, dest}, &response)
cache2go.Cache(dest.Id, dest)
cache2go.Cache(DESTINATION_PREFIX+dest.Id, dest)
return
}

View File

@@ -118,6 +118,7 @@ func (rs *RedisStorage) ExistsData(category, subject string) (bool, error) {
}
func (rs *RedisStorage) GetRatingPlan(key string, checkDb bool) (rp *RatingPlan, err error) {
key = RATING_PLAN_PREFIX + key
if x, err := cache2go.GetCached(key); err == nil {
return x.(*RatingPlan), nil
}
@@ -125,7 +126,7 @@ func (rs *RedisStorage) GetRatingPlan(key string, checkDb bool) (rp *RatingPlan,
return nil, errors.New(utils.ERR_NOT_FOUND)
}
var values []byte
if values, err = rs.db.Get(RATING_PLAN_PREFIX + key); err == nil {
if values, err = rs.db.Get(key); err == nil {
b := bytes.NewBuffer(values)
r, err := zlib.NewReader(b)
if err != nil {
@@ -154,7 +155,7 @@ func (rs *RedisStorage) SetRatingPlan(rp *RatingPlan) (err error) {
response := 0
go historyScribe.Record(&history.Record{RATING_PLAN_PREFIX + rp.Id, rp}, &response)
}
cache2go.Cache(rp.Id, rp)
cache2go.Cache(RATING_PLAN_PREFIX+rp.Id, rp)
return
}
@@ -178,6 +179,7 @@ func (rs *RedisStorage) SetRatingProfile(rp *RatingProfile) (err error) {
}
func (rs *RedisStorage) GetDestination(key string, checkDb bool) (dest *Destination, err error) {
key = DESTINATION_PREFIX + key
if x, err := cache2go.GetCached(key); err == nil {
return x.(*Destination), nil
}
@@ -185,7 +187,7 @@ func (rs *RedisStorage) GetDestination(key string, checkDb bool) (dest *Destinat
return nil, errors.New(utils.ERR_NOT_FOUND)
}
var values []byte
if values, err = rs.db.Get(DESTINATION_PREFIX + key); len(values) > 0 && err == nil {
if values, err = rs.db.Get(key); len(values) > 0 && err == nil {
b := bytes.NewBuffer(values)
r, err := zlib.NewReader(b)
if err != nil {
@@ -217,7 +219,7 @@ func (rs *RedisStorage) SetDestination(dest *Destination) (err error) {
response := 0
go historyScribe.Record(&history.Record{DESTINATION_PREFIX + dest.Id, dest}, &response)
}
cache2go.Cache(dest.Id, dest)
cache2go.Cache(DESTINATION_PREFIX+dest.Id, dest)
return
}