Index: service/memcache/interface.go |
diff --git a/service/memcache/interface.go b/service/memcache/interface.go |
index 346155b42e8b2c5fff93b8027a88f811573592cd..0c043b6aac42669e590b0edd446c60742e4e4ae7 100644 |
--- a/service/memcache/interface.go |
+++ b/service/memcache/interface.go |
@@ -5,25 +5,67 @@ |
package memcache |
// Interface is the full interface to the memcache service. |
+// |
+// The *Multi methods may return a "github.com/luci/luci-go/common/errors".MultiError |
+// if the rpc to the server was successful, but, e.g. some of the items were |
+// missing. They may also return a regular error, if, for example, the rpc |
+// failed outright. |
type Interface interface { |
+ // NewItem creates a new, mutable, memcache item. |
NewItem(key string) Item |
+ // Add puts a single item into memcache, but only if it didn't exist in |
+ // memcache before. |
Add(item Item) error |
+ |
+ // Set the item in memcache, whether or not it exists. |
Set(item Item) error |
- Get(key string) (Item, error) |
+ |
+ // Get retrieves an item from memcache. Only the key field is read. The item |
+ // will be mutated to contain the data in the memcache item. |
+ Get(item Item) error |
+ |
+ // Delete removes an item from memcache. |
Delete(key string) error |
+ |
+ // CompareAndSwap accepts an item which is the result of Get() or GetMulti(). |
+ // The Get functions add a secret field to item ('CasID'), which is used as |
+ // the "compare" value for the "CompareAndSwap". The actual "Value" field of |
+ // the object set by the Get functions is the "swap" value. |
+ // |
+ // Example: |
+ // mc := memcache.Get(context) |
+ // itm := mc.NewItem("aKey") |
+ // mc.Get(itm) // check error |
+ // itm.SetValue(append(itm.Value(), []byte("more bytes"))) |
+ // mc.CompareAndSwap(itm) // check error |
CompareAndSwap(item Item) error |
AddMulti(items []Item) error |
SetMulti(items []Item) error |
- GetMulti(keys []string) (map[string]Item, error) |
+ GetMulti(items []Item) error |
DeleteMulti(keys []string) error |
CompareAndSwapMulti(items []Item) error |
+ // Increment adds delta to the uint64 contained at key. If the memcache key |
+ // is missing, it's populated with initialValue before applying delta (i.e. |
+ // the final value would be initialValue+delta). |
+ // |
+ // Underflow caps at 0, overflow wraps back to 0. |
+ // |
+ // If key contains a value which is not exactly 8 bytes, it's assumed to |
+ // contain non-number data and this method will return an error. |
Increment(key string, delta int64, initialValue uint64) (newValue uint64, err error) |
+ |
+ // IncrementExisting is like Increment, except that the valu must exist |
+ // already. |
IncrementExisting(key string, delta int64) (newValue uint64, err error) |
+ // Flush dumps the entire memcache state. |
Flush() error |
+ // Stats gets some best-effort statistics about the current state of memcache. |
Stats() (*Statistics, error) |
+ |
+ Raw() RawInterface |
} |