| OLD | NEW |
| 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 "golang.org/x/net/context" | 8 "golang.org/x/net/context" |
| 9 | 9 |
| 10 "infra/gae/libs/gae" | 10 "infra/gae/libs/gae" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 return &giImpl{dummy.GI(), curGID(ic), ic} | 26 return &giImpl{dummy.GI(), curGID(ic), ic} |
| 27 }) | 27 }) |
| 28 } | 28 } |
| 29 | 29 |
| 30 // globalAppID is the 'AppID' of everythin returned from this memory | 30 // globalAppID is the 'AppID' of everythin returned from this memory |
| 31 // implementation (DSKeys, GlobalInfo, etc.). There's no way to modify this | 31 // implementation (DSKeys, GlobalInfo, etc.). There's no way to modify this |
| 32 // value through the API, and there are a couple bits of code where it's hard to | 32 // value through the API, and there are a couple bits of code where it's hard to |
| 33 // route this value through to without making the internal APIs really complex. | 33 // route this value through to without making the internal APIs really complex. |
| 34 const globalAppID = "dev~app" | 34 const globalAppID = "dev~app" |
| 35 | 35 |
| 36 type globalInfoData struct{ namespace string } | 36 type globalInfoData struct { |
| 37 » gae.BrokenFeatures |
| 38 |
| 39 » namespace string |
| 40 } |
| 37 | 41 |
| 38 type giImpl struct { | 42 type giImpl struct { |
| 39 gae.GlobalInfo | 43 gae.GlobalInfo |
| 40 » data *globalInfoData | 44 » *globalInfoData |
| 41 » c context.Context | 45 » c context.Context |
| 42 } | 46 } |
| 43 | 47 |
| 44 var _ = gae.GlobalInfo((*giImpl)(nil)) | 48 var _ = gae.GlobalInfo((*giImpl)(nil)) |
| 45 | 49 |
| 46 func (gi *giImpl) Namespace(ns string) (context.Context, error) { | 50 func (gi *giImpl) Namespace(ns string) (ret context.Context, err error) { |
| 47 » return context.WithValue(gi.c, giContextKey, &globalInfoData{ns}), nil | 51 » err = gi.RunIfNotBroken(func() error { |
| 52 » » ret = context.WithValue(gi.c, giContextKey, &globalInfoData{ |
| 53 » » » curGID(gi.c).BrokenFeatures, |
| 54 » » » ns, |
| 55 » » }) |
| 56 » » return nil |
| 57 » }) |
| 58 » return |
| 48 } | 59 } |
| 49 | 60 |
| 50 func (gi *giImpl) AppID() string { | 61 func (gi *giImpl) AppID() string { |
| 51 return globalAppID | 62 return globalAppID |
| 52 } | 63 } |
| OLD | NEW |