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

Unified Diff: go/src/infra/gae/libs/gae/filters/featureBreaker/rds.go

Issue 1227203004: Convert 'Testable' interface into an optional filter. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@add_filters
Patch Set: final rebase 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/filters/featureBreaker/rds.go
diff --git a/go/src/infra/gae/libs/gae/filters/featureBreaker/rds.go b/go/src/infra/gae/libs/gae/filters/featureBreaker/rds.go
new file mode 100644
index 0000000000000000000000000000000000000000..03b3cc29fd9462179571e77500be6cfd2889238d
--- /dev/null
+++ b/go/src/infra/gae/libs/gae/filters/featureBreaker/rds.go
@@ -0,0 +1,95 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package featureBreaker
+
+import (
+ "golang.org/x/net/context"
+
+ "infra/gae/libs/gae"
+)
+
+type rdsState struct {
+ *state
+
+ gae.RawDatastore
+}
+
+func (r *rdsState) DecodeKey(encoded string) (ret gae.DSKey, err error) {
+ err = r.run(func() (err error) {
+ ret, err = r.RawDatastore.DecodeKey(encoded)
+ return
+ })
+ return
+}
+
+func (r *rdsState) GetAll(q gae.DSQuery, dst *[]gae.DSPropertyMap) (ret []gae.DSKey, err error) {
+ err = r.run(func() (err error) {
+ ret, err = r.RawDatastore.GetAll(q, dst)
+ return
+ })
+ return
+}
+
+func (r *rdsState) Count(q gae.DSQuery) (ret int, err error) {
+ err = r.run(func() (err error) {
+ ret, err = r.RawDatastore.Count(q)
+ return
+ })
+ return
+}
+
+func (r *rdsState) RunInTransaction(f func(c context.Context) error, opts *gae.DSTransactionOptions) error {
+ return r.run(func() error {
+ return r.RawDatastore.RunInTransaction(f, opts)
+ })
+}
+
+func (r *rdsState) Put(key gae.DSKey, src gae.DSPropertyLoadSaver) (ret gae.DSKey, err error) {
+ err = r.run(func() (err error) {
+ ret, err = r.RawDatastore.Put(key, src)
+ return
+ })
+ return
+}
+
+func (r *rdsState) Get(key gae.DSKey, dst gae.DSPropertyLoadSaver) error {
+ return r.run(func() error {
+ return r.RawDatastore.Get(key, dst)
+ })
+}
+
+func (r *rdsState) Delete(key gae.DSKey) error {
+ return r.run(func() error {
+ return r.RawDatastore.Delete(key)
+ })
+}
+
+func (r *rdsState) DeleteMulti(keys []gae.DSKey) error {
+ return r.run(func() error {
+ return r.RawDatastore.DeleteMulti(keys)
+ })
+}
+
+func (r *rdsState) GetMulti(keys []gae.DSKey, dst []gae.DSPropertyLoadSaver) error {
+ return r.run(func() error {
+ return r.RawDatastore.GetMulti(keys, dst)
+ })
+}
+
+func (r *rdsState) PutMulti(keys []gae.DSKey, src []gae.DSPropertyLoadSaver) (ret []gae.DSKey, err error) {
+ err = r.run(func() (err error) {
+ ret, err = r.RawDatastore.PutMulti(keys, src)
+ return
+ })
+ return
+}
+
+// FilterRDS installs a counter RawDatastore filter in the context.
+func FilterRDS(c context.Context, defaultError error) (context.Context, FeatureBreaker) {
+ state := newState(defaultError)
+ return gae.AddRDSFilters(c, func(ic context.Context, RawDatastore gae.RawDatastore) gae.RawDatastore {
+ return &rdsState{state, RawDatastore}
+ }), state
+}
« no previous file with comments | « go/src/infra/gae/libs/gae/filters/featureBreaker/mc.go ('k') | go/src/infra/gae/libs/gae/filters/featureBreaker/tq.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698