diff --git a/timespans/kyoto_storage.go b/timespans/kyoto_storage.go index 42899ecb7..fe7dca3e7 100644 --- a/timespans/kyoto_storage.go +++ b/timespans/kyoto_storage.go @@ -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 } diff --git a/timespans/redis_storage.go b/timespans/redis_storage.go index 30c6d2214..a05fc3e43 100644 --- a/timespans/redis_storage.go +++ b/timespans/redis_storage.go @@ -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 } diff --git a/timespans/test.kch b/timespans/test.kch index 82547fcd9..ea76560ac 100644 Binary files a/timespans/test.kch and b/timespans/test.kch differ