github.com/pbberlin/tools@v0.0.0-20160910141205-7aa5421c2169/os/fsi/dsfs/mcache.go (about)

     1  package dsfs
     2  
     3  import (
     4  	"strings"
     5  	"time"
     6  
     7  	aelog "google.golang.org/appengine/log"
     8  	"google.golang.org/appengine/memcache"
     9  )
    10  
    11  func (d *DsDir) MemCacheSet() {
    12  	miPut := &memcache.Item{
    13  		Key:        d.Dir + d.BName,
    14  		Value:      []byte("anything"), // sadly - value is ignored
    15  		Object:     &d,
    16  		Expiration: 3600 * time.Second,
    17  	}
    18  	err := memcache.JSON.Set(d.fSys.Ctx(), miPut)
    19  	if err != nil {
    20  		aelog.Errorf(d.fSys.Ctx(), "memcache put dir %v => err %v", d.Dir+d.BName, err)
    21  	} else {
    22  		// d.Fs.Ctx().Infof("fso memcachd - key %v", d.Dir+d.BName)
    23  	}
    24  }
    25  
    26  func (d *DsDir) MemCacheDelete() {
    27  	err := memcache.Delete(d.fSys.Ctx(), d.Dir+d.BName)
    28  	if err != nil {
    29  		aelog.Errorf(d.fSys.Ctx(), "memcache delete dir %v => err %v", d.Dir+d.BName, err)
    30  	}
    31  }
    32  
    33  func (d *DsDir) MemCacheGet(name string) error {
    34  
    35  	unparsedjson, err := memcache.JSON.Get(d.fSys.c, name, d)
    36  	_ = unparsedjson
    37  	if err != nil &&
    38  		err != memcache.ErrCacheMiss &&
    39  		!strings.Contains(err.Error(), "invalid security ticket") &&
    40  		!strings.Contains(err.Error(), "Canceled") &&
    41  		true {
    42  		aelog.Errorf(d.fSys.Ctx(), "%v", err)
    43  		// panic(err)
    44  		// aelog.Errorf(fSys.Ctx(),"%v", err)
    45  	} else if err == memcache.ErrCacheMiss {
    46  		return err
    47  	}
    48  	// d.fSys.Ctx().Infof("memcache get dir %v - success", name)
    49  	return nil
    50  
    51  }