mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 09:08:45 +05:00
using a single encoder and decoder
This commit is contained in:
@@ -27,17 +27,11 @@ import (
|
||||
|
||||
type KyotoStorage struct {
|
||||
//db *kc.DB
|
||||
db *cabinet.KCDB
|
||||
buf bytes.Buffer
|
||||
decAP *gob.Decoder
|
||||
encAP *gob.Encoder
|
||||
decDest *gob.Decoder
|
||||
encDest *gob.Encoder
|
||||
decTP *gob.Decoder
|
||||
encTP *gob.Encoder
|
||||
decUB *gob.Decoder
|
||||
encUB *gob.Encoder
|
||||
mux sync.Mutex // we need norma lock because we reset the buf variable
|
||||
db *cabinet.KCDB
|
||||
buf bytes.Buffer
|
||||
dec *gob.Decoder
|
||||
enc *gob.Encoder
|
||||
mux sync.Mutex // we need norma lock because we reset the buf variable
|
||||
}
|
||||
|
||||
func NewKyotoStorage(filaName string) (*KyotoStorage, error) {
|
||||
@@ -45,34 +39,28 @@ func NewKyotoStorage(filaName string) (*KyotoStorage, error) {
|
||||
err := ndb.Open(filaName, cabinet.KCOWRITER|cabinet.KCOCREATE)
|
||||
ks := &KyotoStorage{db: ndb}
|
||||
|
||||
ks.decAP = gob.NewDecoder(&ks.buf)
|
||||
ks.encAP = gob.NewEncoder(&ks.buf)
|
||||
ks.decDest = gob.NewDecoder(&ks.buf)
|
||||
ks.encDest = gob.NewEncoder(&ks.buf)
|
||||
ks.decTP = gob.NewDecoder(&ks.buf)
|
||||
ks.encTP = gob.NewEncoder(&ks.buf)
|
||||
ks.decUB = gob.NewDecoder(&ks.buf)
|
||||
ks.encUB = gob.NewEncoder(&ks.buf)
|
||||
ks.trainGobEncodersAndDecoders()
|
||||
ks.dec = gob.NewDecoder(&ks.buf)
|
||||
ks.enc = gob.NewEncoder(&ks.buf)
|
||||
ks.trainGobEncoderAndDecoder()
|
||||
return ks, err
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) trainGobEncodersAndDecoders() {
|
||||
func (ks *KyotoStorage) trainGobEncoderAndDecoder() {
|
||||
aps := []*ActivationPeriod{&ActivationPeriod{}}
|
||||
ks.encAP.Encode(aps)
|
||||
ks.decAP.Decode(&aps)
|
||||
ks.enc.Encode(aps)
|
||||
ks.dec.Decode(&aps)
|
||||
ks.buf.Reset()
|
||||
dest := &Destination{}
|
||||
ks.encDest.Encode(dest)
|
||||
ks.decDest.Decode(&dest)
|
||||
ks.enc.Encode(dest)
|
||||
ks.dec.Decode(&dest)
|
||||
ks.buf.Reset()
|
||||
tp := &TariffPlan{}
|
||||
ks.encTP.Encode(tp)
|
||||
ks.decTP.Decode(&tp)
|
||||
ks.enc.Encode(tp)
|
||||
ks.dec.Decode(&tp)
|
||||
ks.buf.Reset()
|
||||
ub := &UserBudget{}
|
||||
ks.encUB.Encode(ub)
|
||||
ks.decUB.Decode(&ub)
|
||||
ks.enc.Encode(ub)
|
||||
ks.dec.Decode(&ub)
|
||||
ks.buf.Reset()
|
||||
}
|
||||
|
||||
@@ -85,7 +73,7 @@ func (ks *KyotoStorage) SetActivationPeriods(key string, aps []*ActivationPeriod
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.encAP.Encode(aps)
|
||||
ks.enc.Encode(aps)
|
||||
return ks.db.Set([]byte(key), ks.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -97,7 +85,7 @@ func (ks *KyotoStorage) GetActivationPeriods(key string) (aps []*ActivationPerio
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.buf.Write(values)
|
||||
ks.decAP.Decode(&aps)
|
||||
ks.dec.Decode(&aps)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -106,7 +94,7 @@ func (ks *KyotoStorage) SetDestination(dest *Destination) error {
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.encDest.Encode(dest)
|
||||
ks.enc.Encode(dest)
|
||||
return ks.db.Set([]byte(dest.Id), ks.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -118,7 +106,7 @@ func (ks *KyotoStorage) GetDestination(key string) (dest *Destination, err error
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.buf.Write(values)
|
||||
ks.decDest.Decode(&dest)
|
||||
ks.dec.Decode(&dest)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -127,7 +115,7 @@ func (ks *KyotoStorage) SetTariffPlan(tp *TariffPlan) error {
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.encTP.Encode(tp)
|
||||
ks.enc.Encode(tp)
|
||||
return ks.db.Set([]byte(tp.Id), ks.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -139,7 +127,7 @@ func (ks *KyotoStorage) GetTariffPlan(key string) (tp *TariffPlan, err error) {
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.buf.Write(values)
|
||||
ks.decTP.Decode(&tp)
|
||||
ks.dec.Decode(&tp)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -148,7 +136,7 @@ func (ks *KyotoStorage) SetUserBudget(ub *UserBudget) error {
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.encUB.Encode(ub)
|
||||
ks.enc.Encode(ub)
|
||||
return ks.db.Set([]byte(ub.Id), ks.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -160,6 +148,6 @@ func (ks *KyotoStorage) GetUserBudget(key string) (ub *UserBudget, err error) {
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.buf.Write(values)
|
||||
ks.decUB.Decode(&ub)
|
||||
ks.dec.Decode(&ub)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -26,52 +26,39 @@ import (
|
||||
)
|
||||
|
||||
type RedisStorage struct {
|
||||
dbNb int
|
||||
db *godis.Client
|
||||
buf bytes.Buffer
|
||||
decAP *gob.Decoder
|
||||
encAP *gob.Encoder
|
||||
decDest *gob.Decoder
|
||||
encDest *gob.Encoder
|
||||
decTP *gob.Decoder
|
||||
encTP *gob.Encoder
|
||||
decUB *gob.Decoder
|
||||
encUB *gob.Encoder
|
||||
mux sync.Mutex
|
||||
dbNb int
|
||||
db *godis.Client
|
||||
buf bytes.Buffer
|
||||
dec *gob.Decoder
|
||||
enc *gob.Encoder
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
func NewRedisStorage(address string, db int) (*RedisStorage, error) {
|
||||
ndb := godis.New(address, db, "")
|
||||
rs := &RedisStorage{db: ndb, dbNb: db}
|
||||
|
||||
rs.decAP = gob.NewDecoder(&rs.buf)
|
||||
rs.encAP = gob.NewEncoder(&rs.buf)
|
||||
rs.decDest = gob.NewDecoder(&rs.buf)
|
||||
rs.encDest = gob.NewEncoder(&rs.buf)
|
||||
rs.decTP = gob.NewDecoder(&rs.buf)
|
||||
rs.encTP = gob.NewEncoder(&rs.buf)
|
||||
rs.decUB = gob.NewDecoder(&rs.buf)
|
||||
rs.encUB = gob.NewEncoder(&rs.buf)
|
||||
rs.trainGobEncodersAndDecoders()
|
||||
rs.dec = gob.NewDecoder(&rs.buf)
|
||||
rs.enc = gob.NewEncoder(&rs.buf)
|
||||
rs.trainGobEncoderAndDecoder()
|
||||
return rs, nil
|
||||
}
|
||||
|
||||
func (rs *RedisStorage) trainGobEncodersAndDecoders() {
|
||||
func (rs *RedisStorage) trainGobEncoderAndDecoder() {
|
||||
aps := []*ActivationPeriod{&ActivationPeriod{}}
|
||||
rs.encAP.Encode(aps)
|
||||
rs.decAP.Decode(&aps)
|
||||
rs.enc.Encode(aps)
|
||||
rs.dec.Decode(&aps)
|
||||
rs.buf.Reset()
|
||||
dest := &Destination{}
|
||||
rs.encDest.Encode(dest)
|
||||
rs.decDest.Decode(&dest)
|
||||
rs.enc.Encode(dest)
|
||||
rs.dec.Decode(&dest)
|
||||
rs.buf.Reset()
|
||||
tp := &TariffPlan{}
|
||||
rs.encTP.Encode(tp)
|
||||
rs.decTP.Decode(&tp)
|
||||
rs.enc.Encode(tp)
|
||||
rs.dec.Decode(&tp)
|
||||
rs.buf.Reset()
|
||||
ub := &UserBudget{}
|
||||
rs.encUB.Encode(ub)
|
||||
rs.decUB.Decode(&ub)
|
||||
rs.enc.Encode(ub)
|
||||
rs.dec.Decode(&ub)
|
||||
rs.buf.Reset()
|
||||
}
|
||||
|
||||
@@ -85,7 +72,7 @@ func (rs *RedisStorage) SetActivationPeriods(key string, aps []*ActivationPeriod
|
||||
defer rs.mux.Unlock()
|
||||
|
||||
rs.buf.Reset()
|
||||
rs.encAP.Encode(aps)
|
||||
rs.enc.Encode(aps)
|
||||
return rs.db.Set(key, rs.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -98,7 +85,7 @@ func (rs *RedisStorage) GetActivationPeriods(key string) (aps []*ActivationPerio
|
||||
rs.buf.Reset()
|
||||
rs.buf.Write(elem.Bytes())
|
||||
|
||||
rs.decAP.Decode(&aps)
|
||||
rs.dec.Decode(&aps)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -108,7 +95,7 @@ func (rs *RedisStorage) SetDestination(dest *Destination) error {
|
||||
defer rs.mux.Unlock()
|
||||
|
||||
rs.buf.Reset()
|
||||
rs.encDest.Encode(dest)
|
||||
rs.enc.Encode(dest)
|
||||
return rs.db.Set(dest.Id, rs.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -120,7 +107,7 @@ func (rs *RedisStorage) GetDestination(key string) (dest *Destination, err error
|
||||
elem, err := rs.db.Get(key)
|
||||
rs.buf.Reset()
|
||||
rs.buf.Write(elem.Bytes())
|
||||
rs.decDest.Decode(&dest)
|
||||
rs.dec.Decode(&dest)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -130,7 +117,7 @@ func (rs *RedisStorage) SetTariffPlan(tp *TariffPlan) error {
|
||||
defer rs.mux.Unlock()
|
||||
|
||||
rs.buf.Reset()
|
||||
rs.encTP.Encode(tp)
|
||||
rs.enc.Encode(tp)
|
||||
return rs.db.Set(tp.Id, rs.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -142,7 +129,7 @@ func (rs *RedisStorage) GetTariffPlan(key string) (tp *TariffPlan, err error) {
|
||||
elem, err := rs.db.Get(key)
|
||||
rs.buf.Reset()
|
||||
rs.buf.Write(elem.Bytes())
|
||||
rs.decTP.Decode(&tp)
|
||||
rs.dec.Decode(&tp)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -152,7 +139,7 @@ func (rs *RedisStorage) SetUserBudget(ub *UserBudget) error {
|
||||
defer rs.mux.Unlock()
|
||||
|
||||
rs.buf.Reset()
|
||||
rs.encUB.Encode(ub)
|
||||
rs.enc.Encode(ub)
|
||||
return rs.db.Set(ub.Id, rs.buf.Bytes())
|
||||
}
|
||||
|
||||
@@ -164,6 +151,6 @@ func (rs *RedisStorage) GetUserBudget(key string) (ub *UserBudget, err error) {
|
||||
elem, err := rs.db.Get(key)
|
||||
rs.buf.Reset()
|
||||
rs.buf.Write(elem.Bytes())
|
||||
rs.decUB.Decode(&ub)
|
||||
rs.dec.Decode(&ub)
|
||||
return
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user