mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-22 15:48:44 +05:00
splitted cache factory from store
This commit is contained in:
194
engine/cache_factory.go
Normal file
194
engine/cache_factory.go
Normal file
@@ -0,0 +1,194 @@
|
||||
package engine
|
||||
|
||||
import "github.com/cgrates/cgrates/utils"
|
||||
|
||||
type cacheKeyValue interface {
|
||||
Key() string
|
||||
Value() interface{}
|
||||
}
|
||||
|
||||
type mapKeyValue struct {
|
||||
K string
|
||||
V map[string]struct{}
|
||||
}
|
||||
|
||||
func (mkv *mapKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *mapKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type rpKeyValue struct {
|
||||
K string
|
||||
V *RatingPlan
|
||||
}
|
||||
|
||||
func (mkv *rpKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *rpKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type rpfKeyValue struct {
|
||||
K string
|
||||
V *RatingProfile
|
||||
}
|
||||
|
||||
func (mkv *rpfKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *rpfKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type lcrKeyValue struct {
|
||||
K string
|
||||
V *LCR
|
||||
}
|
||||
|
||||
func (mkv *lcrKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *lcrKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type dcKeyValue struct {
|
||||
K string
|
||||
V *utils.DerivedChargers
|
||||
}
|
||||
|
||||
func (mkv *dcKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *dcKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type acsKeyValue struct {
|
||||
K string
|
||||
V Actions
|
||||
}
|
||||
|
||||
func (mkv *acsKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *acsKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type aplKeyValue struct {
|
||||
K string
|
||||
V *ActionPlan
|
||||
}
|
||||
|
||||
func (mkv *aplKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *aplKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type sgKeyValue struct {
|
||||
K string
|
||||
V *SharedGroup
|
||||
}
|
||||
|
||||
func (mkv *sgKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *sgKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type alsKeyValue struct {
|
||||
K string
|
||||
V AliasValues
|
||||
}
|
||||
|
||||
func (mkv *alsKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *alsKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type loadKeyValue struct {
|
||||
K string
|
||||
V []*utils.LoadInstance
|
||||
}
|
||||
|
||||
func (mkv *loadKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *loadKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
func CacheTypeFactory(prefix string, key string, value interface{}) cacheKeyValue {
|
||||
switch prefix {
|
||||
case utils.DESTINATION_PREFIX:
|
||||
if value != nil {
|
||||
return &mapKeyValue{key, value.(map[string]struct{})}
|
||||
}
|
||||
return &mapKeyValue{"", make(map[string]struct{})}
|
||||
case utils.RATING_PLAN_PREFIX:
|
||||
if value != nil {
|
||||
return &rpKeyValue{key, value.(*RatingPlan)}
|
||||
}
|
||||
return &rpfKeyValue{"", &RatingProfile{}}
|
||||
case utils.RATING_PROFILE_PREFIX:
|
||||
if value != nil {
|
||||
return &rpfKeyValue{key, value.(*RatingProfile)}
|
||||
}
|
||||
return &rpfKeyValue{"", &RatingProfile{}}
|
||||
case utils.LCR_PREFIX:
|
||||
if value != nil {
|
||||
return &lcrKeyValue{key, value.(*LCR)}
|
||||
}
|
||||
return &lcrKeyValue{"", &LCR{}}
|
||||
case utils.DERIVEDCHARGERS_PREFIX:
|
||||
if value != nil {
|
||||
return &dcKeyValue{key, value.(*utils.DerivedChargers)}
|
||||
}
|
||||
return &dcKeyValue{"", &utils.DerivedChargers{}}
|
||||
case utils.ACTION_PREFIX:
|
||||
if value != nil {
|
||||
return &acsKeyValue{key, value.(Actions)}
|
||||
}
|
||||
return &acsKeyValue{"", Actions{}}
|
||||
case utils.ACTION_PLAN_PREFIX:
|
||||
if value != nil {
|
||||
return &aplKeyValue{key, value.(*ActionPlan)}
|
||||
}
|
||||
return &aplKeyValue{"", &ActionPlan{}}
|
||||
case utils.SHARED_GROUP_PREFIX:
|
||||
if value != nil {
|
||||
return &sgKeyValue{key, value.(*SharedGroup)}
|
||||
}
|
||||
return &sgKeyValue{"", &SharedGroup{}}
|
||||
case utils.ALIASES_PREFIX:
|
||||
if value != nil {
|
||||
return &alsKeyValue{key, value.(AliasValues)}
|
||||
}
|
||||
return &alsKeyValue{"", AliasValues{}}
|
||||
case utils.LOADINST_KEY[:PREFIX_LEN]:
|
||||
if value != nil {
|
||||
return &loadKeyValue{key, value.([]*utils.LoadInstance)}
|
||||
}
|
||||
return &loadKeyValue{"", make([]*utils.LoadInstance, 0)}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -332,194 +332,3 @@ func (cs cacheSimpleStore) Load(path string, keys []string) error {
|
||||
utils.Logger.Info("simplestore load")
|
||||
return nil
|
||||
}
|
||||
|
||||
type cacheKeyValue interface {
|
||||
Key() string
|
||||
Value() interface{}
|
||||
}
|
||||
|
||||
type mapKeyValue struct {
|
||||
K string
|
||||
V map[string]struct{}
|
||||
}
|
||||
|
||||
func (mkv *mapKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *mapKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type rpKeyValue struct {
|
||||
K string
|
||||
V *RatingPlan
|
||||
}
|
||||
|
||||
func (mkv *rpKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *rpKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type rpfKeyValue struct {
|
||||
K string
|
||||
V *RatingProfile
|
||||
}
|
||||
|
||||
func (mkv *rpfKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *rpfKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type lcrKeyValue struct {
|
||||
K string
|
||||
V *LCR
|
||||
}
|
||||
|
||||
func (mkv *lcrKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *lcrKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type dcKeyValue struct {
|
||||
K string
|
||||
V *utils.DerivedChargers
|
||||
}
|
||||
|
||||
func (mkv *dcKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *dcKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type acsKeyValue struct {
|
||||
K string
|
||||
V Actions
|
||||
}
|
||||
|
||||
func (mkv *acsKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *acsKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type aplKeyValue struct {
|
||||
K string
|
||||
V *ActionPlan
|
||||
}
|
||||
|
||||
func (mkv *aplKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *aplKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type sgKeyValue struct {
|
||||
K string
|
||||
V *SharedGroup
|
||||
}
|
||||
|
||||
func (mkv *sgKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *sgKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type alsKeyValue struct {
|
||||
K string
|
||||
V AliasValues
|
||||
}
|
||||
|
||||
func (mkv *alsKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *alsKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
type loadKeyValue struct {
|
||||
K string
|
||||
V []*utils.LoadInstance
|
||||
}
|
||||
|
||||
func (mkv *loadKeyValue) Key() string {
|
||||
return mkv.K
|
||||
}
|
||||
|
||||
func (mkv *loadKeyValue) Value() interface{} {
|
||||
return mkv.V
|
||||
}
|
||||
|
||||
func CacheTypeFactory(prefix string, key string, value interface{}) cacheKeyValue {
|
||||
switch prefix {
|
||||
case utils.DESTINATION_PREFIX:
|
||||
if value != nil {
|
||||
return &mapKeyValue{key, value.(map[string]struct{})}
|
||||
}
|
||||
return &mapKeyValue{"", make(map[string]struct{})}
|
||||
case utils.RATING_PLAN_PREFIX:
|
||||
if value != nil {
|
||||
return &rpKeyValue{key, value.(*RatingPlan)}
|
||||
}
|
||||
return &rpfKeyValue{"", &RatingProfile{}}
|
||||
case utils.RATING_PROFILE_PREFIX:
|
||||
if value != nil {
|
||||
return &rpfKeyValue{key, value.(*RatingProfile)}
|
||||
}
|
||||
return &rpfKeyValue{"", &RatingProfile{}}
|
||||
case utils.LCR_PREFIX:
|
||||
if value != nil {
|
||||
return &lcrKeyValue{key, value.(*LCR)}
|
||||
}
|
||||
return &lcrKeyValue{"", &LCR{}}
|
||||
case utils.DERIVEDCHARGERS_PREFIX:
|
||||
if value != nil {
|
||||
return &dcKeyValue{key, value.(*utils.DerivedChargers)}
|
||||
}
|
||||
return &dcKeyValue{"", &utils.DerivedChargers{}}
|
||||
case utils.ACTION_PREFIX:
|
||||
if value != nil {
|
||||
return &acsKeyValue{key, value.(Actions)}
|
||||
}
|
||||
return &acsKeyValue{"", Actions{}}
|
||||
case utils.ACTION_PLAN_PREFIX:
|
||||
if value != nil {
|
||||
return &aplKeyValue{key, value.(*ActionPlan)}
|
||||
}
|
||||
return &aplKeyValue{"", &ActionPlan{}}
|
||||
case utils.SHARED_GROUP_PREFIX:
|
||||
if value != nil {
|
||||
return &sgKeyValue{key, value.(*SharedGroup)}
|
||||
}
|
||||
return &sgKeyValue{"", &SharedGroup{}}
|
||||
case utils.ALIASES_PREFIX:
|
||||
if value != nil {
|
||||
return &alsKeyValue{key, value.(AliasValues)}
|
||||
}
|
||||
return &alsKeyValue{"", AliasValues{}}
|
||||
case utils.LOADINST_KEY[:PREFIX_LEN]:
|
||||
if value != nil {
|
||||
return &loadKeyValue{key, value.([]*utils.LoadInstance)}
|
||||
}
|
||||
return &loadKeyValue{"", make([]*utils.LoadInstance, 0)}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user