Chromium Code Reviews| Index: filter/featureBreaker/rds.go |
| diff --git a/filter/featureBreaker/rds.go b/filter/featureBreaker/rds.go |
| index 5f8fa64d9582e84b8fab5b6278767e50726f065e..8a007869e5a10bed25d3a3d0dba10b691ec22311 100644 |
| --- a/filter/featureBreaker/rds.go |
| +++ b/filter/featureBreaker/rds.go |
| @@ -13,44 +13,55 @@ import ( |
| type dsState struct { |
| *state |
| - ds.RawInterface |
| + rds ds.RawInterface |
| } |
| -func (r *dsState) DecodeKey(encoded string) (ret ds.Key, err error) { |
| - err = r.run(func() (err error) { |
| - ret, err = r.RawInterface.DecodeKey(encoded) |
| +func (r *dsState) DecodeCursor(s string) (ds.Cursor, error) { |
| + curs := ds.Cursor(nil) |
| + err := r.run(func() (err error) { |
| + curs, err = r.rds.DecodeCursor(s) |
| return |
| }) |
| - return |
| + return curs, err |
| +} |
| + |
| +func (r *dsState) Run(q *ds.FinalizedQuery, cb ds.RawRunCB) error { |
|
iannucci
2015/09/18 04:31:52
turns out I was missing this method entirely becau
|
| + return r.run(func() error { |
| + return r.rds.Run(q, cb) |
| + }) |
| } |
| func (r *dsState) RunInTransaction(f func(c context.Context) error, opts *ds.TransactionOptions) error { |
| return r.run(func() error { |
| - return r.RawInterface.RunInTransaction(f, opts) |
| + return r.rds.RunInTransaction(f, opts) |
| }) |
| } |
| // TODO(riannucci): Allow the user to specify a multierror which will propagate |
| // to the callback correctly. |
| -func (r *dsState) DeleteMulti(keys []ds.Key, cb ds.DeleteMultiCB) error { |
| +func (r *dsState) DeleteMulti(keys []*ds.Key, cb ds.DeleteMultiCB) error { |
| return r.run(func() error { |
| - return r.RawInterface.DeleteMulti(keys, cb) |
| + return r.rds.DeleteMulti(keys, cb) |
| }) |
| } |
| -func (r *dsState) GetMulti(keys []ds.Key, meta ds.MultiMetaGetter, cb ds.GetMultiCB) error { |
| +func (r *dsState) GetMulti(keys []*ds.Key, meta ds.MultiMetaGetter, cb ds.GetMultiCB) error { |
| return r.run(func() error { |
| - return r.RawInterface.GetMulti(keys, meta, cb) |
| + return r.rds.GetMulti(keys, meta, cb) |
| }) |
| } |
| -func (r *dsState) PutMulti(keys []ds.Key, vals []ds.PropertyMap, cb ds.PutMultiCB) error { |
| +func (r *dsState) PutMulti(keys []*ds.Key, vals []ds.PropertyMap, cb ds.PutMultiCB) error { |
| return r.run(func() (err error) { |
| - return r.RawInterface.PutMulti(keys, vals, cb) |
| + return r.rds.PutMulti(keys, vals, cb) |
| }) |
| } |
| +func (r *dsState) Testable() ds.Testable { |
| + return r.rds.Testable() |
| +} |
| + |
| // FilterRDS installs a counter datastore filter in the context. |
| func FilterRDS(c context.Context, defaultError error) (context.Context, FeatureBreaker) { |
| state := newState(defaultError) |