Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Unified Diff: go/src/infra/gae/libs/gae/memory/raw_datstore_data.go

Issue 1227183003: Change RawDatastore to do less reflection. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@move_dummy
Patch Set: fix No/ShouldIndex Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
diff --git a/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go b/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
index c786835c195b207c06348874f43932d342651c4b..9af0dae2671e967a837f23f73d425dd0fd133a04 100644
--- a/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
+++ b/go/src/infra/gae/libs/gae/memory/raw_datstore_data.go
@@ -122,28 +122,20 @@ func (d *dataStoreData) entsKeyLocked(key gae.DSKey) (*memCollection, gae.DSKey,
return ents, key, nil
}
-func putPrelim(ns string, key gae.DSKey, src interface{}) (gae.DSPropertyMap, error) {
+func putPrelim(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSPropertyMap, error) {
if !keyCouldBeValid(key, ns, false) {
// TODO(riannucci): different error for Put-ing to reserved Keys?
return nil, gae.ErrDSInvalidKey
}
-
- pls, err := helper.GetPLS(src)
- if err != nil {
- return nil, err
- }
- return pls.Save()
+ return pls.Save(false)
}
-func (d *dataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.DSKey, error) {
- pmData, err := putPrelim(ns, key, src)
+func (d *dataStoreData) put(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSKey, error) {
+ pm, err := putPrelim(ns, key, pls)
if err != nil {
return nil, err
}
- if key, err = d.putInner(key, pmData); err != nil {
- return nil, err
- }
- return key, nil
+ return d.putInner(key, pm)
}
func (d *dataStoreData) putInner(key gae.DSKey, data gae.DSPropertyMap) (gae.DSKey, error) {
@@ -178,7 +170,7 @@ func (d *dataStoreData) putInner(key gae.DSKey, data gae.DSPropertyMap) (gae.DSK
return key, nil
}
-func getInner(ns string, key gae.DSKey, dst interface{}, getColl func() (*memCollection, error)) error {
+func getInner(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver, getColl func() (*memCollection, error)) error {
if helper.DSKeyIncomplete(key) || !helper.DSKeyValid(key, ns, true) {
return gae.ErrDSInvalidKey
}
@@ -195,24 +187,16 @@ func getInner(ns string, key gae.DSKey, dst interface{}, getColl func() (*memCol
return gae.ErrDSNoSuchEntity
}
- pm, err := rpmWoCtx(pdata, ns)
- if err != nil {
- return err
- }
-
- pls, err := helper.GetPLS(dst)
+ got, err := rpmWoCtx(pdata, ns)
if err != nil {
return err
}
- // TODO(riannucci): should the Get API reveal conversion errors instead of
- // swallowing them?
- _, err = pls.Load(pm)
- return err
+ return pls.Load(got)
}
-func (d *dataStoreData) get(ns string, key gae.DSKey, dst interface{}) error {
- return getInner(ns, key, dst, func() (*memCollection, error) {
+func (d *dataStoreData) get(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) error {
+ return getInner(ns, key, pls, func() (*memCollection, error) {
d.rwlock.RLock()
s := d.store.Snapshot()
d.rwlock.RUnlock()
@@ -414,8 +398,8 @@ func (td *txnDataStoreData) writeMutation(getOnly bool, key gae.DSKey, data gae.
return nil
}
-func (td *txnDataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.DSKey, error) {
- pMap, err := putPrelim(ns, key, src)
+func (td *txnDataStoreData) put(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) (gae.DSKey, error) {
+ pm, err := putPrelim(ns, key, pls)
if err != nil {
return nil, err
}
@@ -429,15 +413,15 @@ func (td *txnDataStoreData) put(ns string, key gae.DSKey, src interface{}) (gae.
return nil, err
}
- if err = td.writeMutation(false, key, pMap); err != nil {
+ if err = td.writeMutation(false, key, pm); err != nil {
return nil, err
}
return key, nil
}
-func (td *txnDataStoreData) get(ns string, key gae.DSKey, dst interface{}) error {
- return getInner(ns, key, dst, func() (*memCollection, error) {
+func (td *txnDataStoreData) get(ns string, key gae.DSKey, pls gae.DSPropertyLoadSaver) error {
+ return getInner(ns, key, pls, func() (*memCollection, error) {
if err := td.writeMutation(true, key, nil); err != nil {
return nil, err
}
« no previous file with comments | « go/src/infra/gae/libs/gae/memory/raw_datstore.go ('k') | go/src/infra/gae/libs/gae/memory/raw_datstore_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698