Index: impl/memory/datastore_data.go |
diff --git a/impl/memory/datastore_data.go b/impl/memory/datastore_data.go |
index 1afc1f30581cf86c99ac287f5a65b3e864823aa6..5ef87530ded64c4c31f367bb859d3f87c43b8d7b 100644 |
--- a/impl/memory/datastore_data.go |
+++ b/impl/memory/datastore_data.go |
@@ -11,6 +11,8 @@ import ( |
"sync/atomic" |
ds "github.com/luci/gae/service/datastore" |
+ "github.com/luci/gae/service/datastore/dskey" |
+ "github.com/luci/gae/service/datastore/serialize" |
"github.com/luci/luci-go/common/errors" |
"golang.org/x/net/context" |
) |
@@ -78,18 +80,18 @@ func (d *dataStoreData) catchupIndexes() { |
/////////////////////////// indicies(dataStoreData) //////////////////////////// |
func groupMetaKey(key ds.Key) []byte { |
- return keyBytes(ds.WithoutContext, |
- ds.NewKey("", "", "__entity_group__", "", 1, ds.KeyRoot(key))) |
+ return keyBytes(serialize.WithoutContext, |
+ dskey.New("", "", "__entity_group__", "", 1, dskey.Root(key))) |
} |
func groupIDsKey(key ds.Key) []byte { |
- return keyBytes(ds.WithoutContext, |
- ds.NewKey("", "", "__entity_group_ids__", "", 1, ds.KeyRoot(key))) |
+ return keyBytes(serialize.WithoutContext, |
+ dskey.New("", "", "__entity_group_ids__", "", 1, dskey.Root(key))) |
} |
func rootIDsKey(kind string) []byte { |
- return keyBytes(ds.WithoutContext, |
- ds.NewKey("", "", "__entity_root_ids__", kind, 0, nil)) |
+ return keyBytes(serialize.WithoutContext, |
+ dskey.New("", "", "__entity_root_ids__", kind, 0, nil)) |
} |
func curVersion(ents *memCollection, key []byte) int64 { |
@@ -112,8 +114,8 @@ func curVersion(ents *memCollection, key []byte) int64 { |
func incrementLocked(ents *memCollection, key []byte) int64 { |
ret := curVersion(ents, key) + 1 |
buf := &bytes.Buffer{} |
- ds.PropertyMap{"__version__": {ds.MkPropertyNI(ret)}}.Write( |
- buf, ds.WithContext) |
+ serialize.WritePropertyMap(buf, serialize.WithContext, ds.PropertyMap{ |
+ "__version__": {ds.MkPropertyNI(ret)}}) |
ents.Set(key, buf.Bytes()) |
return ret |
} |
@@ -125,7 +127,7 @@ func (d *dataStoreData) entsKeyLocked(key ds.Key) (*memCollection, ds.Key) { |
ents = d.store.SetCollection(coll, nil) |
} |
- if ds.KeyIncomplete(key) { |
+ if dskey.Incomplete(key) { |
idKey := []byte(nil) |
if key.Parent() == nil { |
idKey = rootIDsKey(key.Kind()) |
@@ -133,7 +135,7 @@ func (d *dataStoreData) entsKeyLocked(key ds.Key) (*memCollection, ds.Key) { |
idKey = groupIDsKey(key) |
} |
id := incrementLocked(ents, idKey) |
- key = ds.NewKey(key.AppID(), key.Namespace(), key.Kind(), "", id, key.Parent()) |
+ key = dskey.New(key.AppID(), key.Namespace(), key.Kind(), "", id, key.Parent()) |
} |
return ents, key |
@@ -143,7 +145,7 @@ func (d *dataStoreData) putMulti(keys []ds.Key, vals []ds.PropertyMap, cb ds.Put |
for i, k := range keys { |
buf := &bytes.Buffer{} |
pmap, _ := vals[i].Save(false) |
- pmap.Write(buf, ds.WithoutContext) |
+ serialize.WritePropertyMap(buf, serialize.WithoutContext, pmap) |
dataBytes := buf.Bytes() |
k, err := func() (ret ds.Key, err error) { |
@@ -153,7 +155,7 @@ func (d *dataStoreData) putMulti(keys []ds.Key, vals []ds.PropertyMap, cb ds.Put |
ents, ret := d.entsKeyLocked(k) |
incrementLocked(ents, groupMetaKey(ret)) |
- old := ents.Get(keyBytes(ds.WithoutContext, ret)) |
+ old := ents.Get(keyBytes(serialize.WithoutContext, ret)) |
oldPM := ds.PropertyMap(nil) |
if old != nil { |
if oldPM, err = rpmWoCtx(old, ret.Namespace()); err != nil { |
@@ -161,7 +163,7 @@ func (d *dataStoreData) putMulti(keys []ds.Key, vals []ds.PropertyMap, cb ds.Put |
} |
} |
updateIndicies(d.store, ret, oldPM, pmap) |
- ents.Set(keyBytes(ds.WithoutContext, ret), dataBytes) |
+ ents.Set(keyBytes(serialize.WithoutContext, ret), dataBytes) |
return |
}() |
if cb != nil { |
@@ -183,7 +185,7 @@ func getMultiInner(keys []ds.Key, cb ds.GetMultiCB, getColl func() (*memCollecti |
} |
for _, k := range keys { |
- pdata := ents.Get(keyBytes(ds.WithoutContext, k)) |
+ pdata := ents.Get(keyBytes(serialize.WithoutContext, k)) |
if pdata == nil { |
cb(nil, ds.ErrNoSuchEntity) |
continue |
@@ -205,7 +207,7 @@ func (d *dataStoreData) getMulti(keys []ds.Key, cb ds.GetMultiCB) error { |
func (d *dataStoreData) delMulti(keys []ds.Key, cb ds.DeleteMultiCB) { |
toDel := make([][]byte, 0, len(keys)) |
for _, k := range keys { |
- toDel = append(toDel, keyBytes(ds.WithoutContext, k)) |
+ toDel = append(toDel, keyBytes(serialize.WithoutContext, k)) |
} |
ns := keys[0].Namespace() |
@@ -244,7 +246,7 @@ func (d *dataStoreData) canApplyTxn(obj memContextObj) bool { |
if len(muts) == 0 { // read-only |
continue |
} |
- k, err := ds.ReadKey(bytes.NewBufferString(rk), ds.WithContext, "", "") |
+ k, err := serialize.ReadKey(bytes.NewBufferString(rk), serialize.WithContext, "", "") |
if err != nil { |
panic(err) |
} |
@@ -363,7 +365,7 @@ func (td *txnDataStoreData) run(f func() error) error { |
// Returns an error if this key causes the transaction to cross too many entity |
// groups. |
func (td *txnDataStoreData) writeMutation(getOnly bool, key ds.Key, data ds.PropertyMap) error { |
- rk := string(keyBytes(ds.WithContext, ds.KeyRoot(key))) |
+ rk := string(keyBytes(serialize.WithContext, dskey.Root(key))) |
td.Lock() |
defer td.Unlock() |
@@ -426,22 +428,20 @@ func (td *txnDataStoreData) delMulti(keys []ds.Key, cb ds.DeleteMultiCB) error { |
return nil |
} |
-func keyBytes(ctx ds.KeyContext, key ds.Key) []byte { |
+func keyBytes(ctx serialize.KeyContext, key ds.Key) []byte { |
buf := &bytes.Buffer{} |
- ds.WriteKey(buf, ctx, key) |
+ serialize.WriteKey(buf, ctx, key) |
return buf.Bytes() |
} |
func rpmWoCtx(data []byte, ns string) (ds.PropertyMap, error) { |
- ret := ds.PropertyMap{} |
- err := ret.Read(bytes.NewBuffer(data), ds.WithoutContext, globalAppID, ns) |
- return ret, err |
+ return serialize.ReadPropertyMap(bytes.NewBuffer(data), |
+ serialize.WithoutContext, globalAppID, ns) |
} |
func rpm(data []byte) (ds.PropertyMap, error) { |
- ret := ds.PropertyMap{} |
- err := ret.Read(bytes.NewBuffer(data), ds.WithContext, "", "") |
- return ret, err |
+ return serialize.ReadPropertyMap(bytes.NewBuffer(data), |
+ serialize.WithContext, "", "") |
} |
type keyitem interface { |