| Index: service/memcache/memcache.go
 | 
| diff --git a/service/memcache/memcache.go b/service/memcache/memcache.go
 | 
| deleted file mode 100644
 | 
| index c68f9e3b9734aecc783417040407551edb691a45..0000000000000000000000000000000000000000
 | 
| --- a/service/memcache/memcache.go
 | 
| +++ /dev/null
 | 
| @@ -1,130 +0,0 @@
 | 
| -// Copyright 2015 The LUCI Authors. All rights reserved.
 | 
| -// Use of this source code is governed under the Apache License, Version 2.0
 | 
| -// that can be found in the LICENSE file.
 | 
| -
 | 
| -package memcache
 | 
| -
 | 
| -import (
 | 
| -	"github.com/luci/luci-go/common/errors"
 | 
| -	"golang.org/x/net/context"
 | 
| -)
 | 
| -
 | 
| -type memcacheImpl struct{ RawInterface }
 | 
| -
 | 
| -var _ Interface = (*memcacheImpl)(nil)
 | 
| -
 | 
| -func (m *memcacheImpl) Add(item Item) error {
 | 
| -	return errors.SingleError(m.AddMulti([]Item{item}))
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) Set(item Item) error {
 | 
| -	return errors.SingleError(m.SetMulti([]Item{item}))
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) Get(key string) (Item, error) {
 | 
| -	ret := m.NewItem(key)
 | 
| -	err := errors.SingleError(m.GetMulti([]Item{ret}))
 | 
| -	return ret, err
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) Delete(key string) error {
 | 
| -	return errors.SingleError(m.DeleteMulti([]string{key}))
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) CompareAndSwap(item Item) error {
 | 
| -	return errors.SingleError(m.CompareAndSwapMulti([]Item{item}))
 | 
| -}
 | 
| -
 | 
| -func filterItems(lme errors.LazyMultiError, items []Item, nilErr error) ([]Item, []int) {
 | 
| -	idxMap := make([]int, 0, len(items))
 | 
| -	retItems := make([]Item, 0, len(items))
 | 
| -	for i, itm := range items {
 | 
| -		if itm != nil {
 | 
| -			idxMap = append(idxMap, i)
 | 
| -			retItems = append(retItems, itm)
 | 
| -		} else {
 | 
| -			lme.Assign(i, nilErr)
 | 
| -		}
 | 
| -	}
 | 
| -	return retItems, idxMap
 | 
| -}
 | 
| -
 | 
| -func multiCall(items []Item, nilErr error, inner func(items []Item, cb RawCB) error) error {
 | 
| -	lme := errors.NewLazyMultiError(len(items))
 | 
| -	realItems, idxMap := filterItems(lme, items, nilErr)
 | 
| -	j := 0
 | 
| -	err := inner(realItems, func(err error) {
 | 
| -		lme.Assign(idxMap[j], err)
 | 
| -		j++
 | 
| -	})
 | 
| -	if err == nil {
 | 
| -		err = lme.Get()
 | 
| -	}
 | 
| -	return err
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) AddMulti(items []Item) error {
 | 
| -	return multiCall(items, ErrNotStored, m.RawInterface.AddMulti)
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) SetMulti(items []Item) error {
 | 
| -	return multiCall(items, ErrNotStored, m.RawInterface.SetMulti)
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) CompareAndSwapMulti(items []Item) error {
 | 
| -	return multiCall(items, ErrNotStored, m.RawInterface.CompareAndSwapMulti)
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) DeleteMulti(keys []string) error {
 | 
| -	lme := errors.NewLazyMultiError(len(keys))
 | 
| -	i := 0
 | 
| -	err := m.RawInterface.DeleteMulti(keys, func(err error) {
 | 
| -		lme.Assign(i, err)
 | 
| -		i++
 | 
| -	})
 | 
| -	if err == nil {
 | 
| -		err = lme.Get()
 | 
| -	}
 | 
| -	return err
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) GetMulti(items []Item) error {
 | 
| -	lme := errors.NewLazyMultiError(len(items))
 | 
| -	realItems, idxMap := filterItems(lme, items, ErrCacheMiss)
 | 
| -	if len(realItems) == 0 {
 | 
| -		return lme.Get()
 | 
| -	}
 | 
| -
 | 
| -	keys := make([]string, len(realItems))
 | 
| -	for i, itm := range realItems {
 | 
| -		keys[i] = itm.Key()
 | 
| -	}
 | 
| -
 | 
| -	j := 0
 | 
| -	err := m.RawInterface.GetMulti(keys, func(item Item, err error) {
 | 
| -		i := idxMap[j]
 | 
| -		if !lme.Assign(i, err) {
 | 
| -			items[i].SetAll(item)
 | 
| -		}
 | 
| -		j++
 | 
| -	})
 | 
| -	if err == nil {
 | 
| -		err = lme.Get()
 | 
| -	}
 | 
| -	return err
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) Increment(key string, delta int64, initialValue uint64) (newValue uint64, err error) {
 | 
| -	return m.RawInterface.Increment(key, delta, &initialValue)
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) IncrementExisting(key string, delta int64) (newValue uint64, err error) {
 | 
| -	return m.RawInterface.Increment(key, delta, nil)
 | 
| -}
 | 
| -
 | 
| -func (m *memcacheImpl) Raw() RawInterface { return m.RawInterface }
 | 
| -
 | 
| -// Get gets the current memcache implementation from the context.
 | 
| -func Get(c context.Context) Interface {
 | 
| -	return &memcacheImpl{GetRaw(c)}
 | 
| -}
 | 
| 
 |