UOE-7910 adding fetcher changes
This commit is contained in:
parent
52cfb5e748
commit
bf7da175d3
|
@ -0,0 +1,84 @@
|
|||
package go-cache
|
||||
|
||||
const (
|
||||
errInvalidKey = "type:[invalid_key] key:[%s]"
|
||||
)
|
||||
type callbackFunc func(key string)(interface{},error)
|
||||
|
||||
type fetcher struct {
|
||||
cb map[string]callbackFunc
|
||||
prefixLen int
|
||||
}
|
||||
|
||||
func NewFetcher(prefixLen int) *fetcher {
|
||||
return &fetcher{
|
||||
cb : make(map[string]callbackFunc),
|
||||
prefixLen: prefixLen,
|
||||
}
|
||||
}
|
||||
|
||||
func (f *fetcher) Register(keyPrefix string, cbf callbackFunc) bool{
|
||||
if len(keyPrefix) != f.prefixLen {
|
||||
return false
|
||||
}
|
||||
f.cb[keyPrefix] = cbf
|
||||
return true
|
||||
}
|
||||
|
||||
func (f *fetcher) execute(key string) (interface{},error) {
|
||||
if len(key) < f.prefixLen {
|
||||
return nil, fmt.Errorf(errInvalidKey,key)
|
||||
}
|
||||
keyPrefix := key[:f.prefixLen]
|
||||
cbf, ok := f.cb[keyPrefix]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf(errInvalidKey,key)
|
||||
}
|
||||
return cbf(key)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
//header bidding
|
||||
sample keys
|
||||
|
||||
Key_Prefix_PUB_SLOT_INFO = "AAA00"
|
||||
Key_Prefix_PUB_HB_PARTNER = "AAB00"
|
||||
Key_Prefix_PubAdunitConfig = "AAC00"
|
||||
Key_Prefix_PubSlotHashInfo = "AAD00"
|
||||
Key_Prefix_PubSlotRegex = "AAE00"
|
||||
Key_Prefix_PubSlotNameHash = "AAF00"
|
||||
Key_Prefix_PubVASTTags = "AAG00"
|
||||
|
||||
|
||||
PUB_SLOT_INFO = Key_Prefix_PUB_SLOT_INFO + "_%d_%d_%d_%d" // publisher slot mapping at publisher, profile, display version and adapter level
|
||||
PUB_HB_PARTNER = Key_Prefix_PUB_HB_PARTNER + "_%d_%d_%d" // header bidding partner list at publishr,profile, display version level
|
||||
PubAdunitConfig = Key_Prefix_PubAdunitConfig + "_%d_%d_%d"
|
||||
PubSlotHashInfo = Key_Prefix_PubSlotHashInfo + "_%d_%d_%d_%d" // slot and its hash info at publisher, profile, display version and adapter level
|
||||
PubSlotRegex = Key_Prefix_PubSlotRegex + "_%d_%d_%d_%d_%s" // slot and its matching regex info at publisher, profile, display version and adapter level
|
||||
PubSlotNameHash = Key_Prefix_PubSlotNameHash + "_%d" //publisher slotname hash mapping cache key
|
||||
PubVASTTags = Key_Prefix_PubVASTTags + "_%d"
|
||||
|
||||
func DBGetVASTTags(key string) (interface{},error) {
|
||||
strings.Split(key,"_")
|
||||
key[0] // keyprefix
|
||||
key[1] //publisherid
|
||||
}
|
||||
|
||||
//hb
|
||||
fetcher.Register(Key_Prefix_PUB_SLOT_INFO, DBGetVASTTags)
|
||||
|
||||
type AsyncCache struct {
|
||||
c *cache
|
||||
f *fetcher
|
||||
ks *keystatus
|
||||
}
|
||||
|
||||
func (c *AsycCache) aget(key string) {
|
||||
data, err := c.f.execute(key)
|
||||
if err != nil {
|
||||
c.c.set(key, data)
|
||||
}
|
||||
}
|
||||
*/
|
Loading…
Reference in New Issue