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

Side by Side Diff: go/src/infra/gae/libs/wrapper/memory/datastore_data.go

Issue 1143053004: Simplify memory package interface. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: switch to blasters Created 5 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package memory 5 package memory
6 6
7 import ( 7 import (
8 "errors" 8 "errors"
9 "infra/gae/libs/wrapper" 9 "infra/gae/libs/wrapper"
10 goon_internal "infra/gae/libs/wrapper/memory/internal/goon" 10 goon_internal "infra/gae/libs/wrapper/memory/internal/goon"
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 return nil, nil, err 145 return nil, nil, err
146 } 146 }
147 key = newKey(key.Namespace(), key.Kind(), "", id, key.Parent()) 147 key = newKey(key.Namespace(), key.Kind(), "", id, key.Parent())
148 } 148 }
149 149
150 return ents, key, nil 150 return ents, key, nil
151 } 151 }
152 152
153 func putPrelim(ns string, knr goon.KindNameResolver, src interface{}) (*datastor e.Key, *propertyList, error) { 153 func putPrelim(ns string, knr goon.KindNameResolver, src interface{}) (*datastor e.Key, *propertyList, error) {
154 key := newKeyObj(ns, knr, src) 154 key := newKeyObj(ns, knr, src)
155 » if !KeyCouldBeValid(ns, key, UserKeyOnly) { 155 » if !keyCouldBeValid(ns, key, userKeyOnly) {
156 // TODO(riannucci): different error for Put-ing to reserved Keys ? 156 // TODO(riannucci): different error for Put-ing to reserved Keys ?
157 return nil, nil, datastore.ErrInvalidKey 157 return nil, nil, datastore.ErrInvalidKey
158 } 158 }
159 159
160 data, err := toPL(src) 160 data, err := toPL(src)
161 return key, data, err 161 return key, data, err
162 } 162 }
163 163
164 func (d *dataStoreData) put(ns string, src interface{}) (*datastore.Key, error) { 164 func (d *dataStoreData) put(ns string, src interface{}) (*datastore.Key, error) {
165 key, plData, err := putPrelim(ns, d.KindNameResolver(), src) 165 key, plData, err := putPrelim(ns, d.KindNameResolver(), src)
(...skipping 23 matching lines...) Expand all
189 return nil, err 189 return nil, err
190 } 190 }
191 191
192 ents.Set(keyBytes(noNS, key), dataBytes) 192 ents.Set(keyBytes(noNS, key), dataBytes)
193 193
194 return key, nil 194 return key, nil
195 } 195 }
196 196
197 func getInner(ns string, knr goon.KindNameResolver, dst interface{}, getColl fun c(*datastore.Key) (*memCollection, error)) error { 197 func getInner(ns string, knr goon.KindNameResolver, dst interface{}, getColl fun c(*datastore.Key) (*memCollection, error)) error {
198 key := newKeyObj(ns, knr, dst) 198 key := newKeyObj(ns, knr, dst)
199 » if !KeyValid(ns, key, AllowSpecialKeys) { 199 » if !keyValid(ns, key, allowSpecialKeys) {
200 return datastore.ErrInvalidKey 200 return datastore.ErrInvalidKey
201 } 201 }
202 202
203 ents, err := getColl(key) 203 ents, err := getColl(key)
204 if err != nil { 204 if err != nil {
205 return err 205 return err
206 } 206 }
207 if ents == nil { 207 if ents == nil {
208 return datastore.ErrNoSuchEntity 208 return datastore.ErrNoSuchEntity
209 } 209 }
(...skipping 12 matching lines...) Expand all
222 return getInner(ns, d.KindNameResolver(), dst, func(*datastore.Key) (*me mCollection, error) { 222 return getInner(ns, d.KindNameResolver(), dst, func(*datastore.Key) (*me mCollection, error) {
223 d.rwlock.RLock() 223 d.rwlock.RLock()
224 s := d.store.Snapshot() 224 s := d.store.Snapshot()
225 d.rwlock.RUnlock() 225 d.rwlock.RUnlock()
226 226
227 return s.GetCollection("ents:" + ns), nil 227 return s.GetCollection("ents:" + ns), nil
228 }) 228 })
229 } 229 }
230 230
231 func (d *dataStoreData) del(ns string, key *datastore.Key) error { 231 func (d *dataStoreData) del(ns string, key *datastore.Key) error {
232 » if !KeyValid(ns, key, UserKeyOnly) { 232 » if !keyValid(ns, key, userKeyOnly) {
233 return datastore.ErrInvalidKey 233 return datastore.ErrInvalidKey
234 } 234 }
235 235
236 keyBuf := keyBytes(noNS, key) 236 keyBuf := keyBytes(noNS, key)
237 237
238 d.rwlock.Lock() 238 d.rwlock.Lock()
239 defer d.rwlock.Unlock() 239 defer d.rwlock.Unlock()
240 240
241 ents := d.store.GetCollection("ents:" + ns) 241 ents := d.store.GetCollection("ents:" + ns)
242 if ents == nil { 242 if ents == nil {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 func (td *txnDataStoreData) get(ns string, dst interface{}) error { 437 func (td *txnDataStoreData) get(ns string, dst interface{}) error {
438 return getInner(ns, td.KindNameResolver(), dst, func(key *datastore.Key) (*memCollection, error) { 438 return getInner(ns, td.KindNameResolver(), dst, func(key *datastore.Key) (*memCollection, error) {
439 if err := td.writeMutation(true, key, nil); err != nil { 439 if err := td.writeMutation(true, key, nil); err != nil {
440 return nil, err 440 return nil, err
441 } 441 }
442 return td.snap.GetCollection("ents:" + ns), nil 442 return td.snap.GetCollection("ents:" + ns), nil
443 }) 443 })
444 } 444 }
445 445
446 func (td *txnDataStoreData) del(ns string, key *datastore.Key) error { 446 func (td *txnDataStoreData) del(ns string, key *datastore.Key) error {
447 » if !KeyValid(ns, key, UserKeyOnly) { 447 » if !keyValid(ns, key, userKeyOnly) {
448 return datastore.ErrInvalidKey 448 return datastore.ErrInvalidKey
449 } 449 }
450 return td.writeMutation(false, key, nil) 450 return td.writeMutation(false, key, nil)
451 } 451 }
OLDNEW
« no previous file with comments | « go/src/infra/gae/libs/wrapper/memory/datastore.go ('k') | go/src/infra/gae/libs/wrapper/memory/datastore_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698