| Index: go/src/infra/gae/libs/wrapper/memory/globalinfo.go
|
| diff --git a/go/src/infra/gae/libs/wrapper/memory/globalinfo.go b/go/src/infra/gae/libs/wrapper/memory/globalinfo.go
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..951c3c4e69c02aab4c776fb155d49381aad1523c
|
| --- /dev/null
|
| +++ b/go/src/infra/gae/libs/wrapper/memory/globalinfo.go
|
| @@ -0,0 +1,39 @@
|
| +// 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 memory
|
| +
|
| +import (
|
| + "infra/gae/libs/wrapper"
|
| +
|
| + "golang.org/x/net/context"
|
| +)
|
| +
|
| +type giContextKeyType int
|
| +
|
| +var giContextKey giContextKeyType
|
| +
|
| +func curGID(c context.Context) *globalInfoData {
|
| + return c.Value(giContextKey).(*globalInfoData)
|
| +}
|
| +
|
| +// UseGI adds a wrapper.GlobalInfo context, accessible
|
| +// by wrapper.GetGI(c)
|
| +func UseGI(c context.Context) context.Context {
|
| + return wrapper.SetGIFactory(c, func(ic context.Context) wrapper.GlobalInfo {
|
| + return &giImpl{wrapper.DummyGI(), curGID(ic), ic}
|
| + })
|
| +}
|
| +
|
| +type globalInfoData struct{ namespace string }
|
| +
|
| +type giImpl struct {
|
| + wrapper.GlobalInfo
|
| + data *globalInfoData
|
| + c context.Context
|
| +}
|
| +
|
| +func (gi *giImpl) Namespace(ns string) (context.Context, error) {
|
| + return context.WithValue(gi.c, giContextKey, &globalInfoData{ns}), nil
|
| +}
|
|
|