Remove BPA from Makefile
[icn.git] / cmd / bpa-operator / vendor / go.opencensus.io / tag / context.go
1 // Copyright 2017, OpenCensus Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15
16 package tag
17
18 import (
19         "context"
20 )
21
22 // FromContext returns the tag map stored in the context.
23 func FromContext(ctx context.Context) *Map {
24         // The returned tag map shouldn't be mutated.
25         ts := ctx.Value(mapCtxKey)
26         if ts == nil {
27                 return nil
28         }
29         return ts.(*Map)
30 }
31
32 // NewContext creates a new context with the given tag map.
33 // To propagate a tag map to downstream methods and downstream RPCs, add a tag map
34 // to the current context. NewContext will return a copy of the current context,
35 // and put the tag map into the returned one.
36 // If there is already a tag map in the current context, it will be replaced with m.
37 func NewContext(ctx context.Context, m *Map) context.Context {
38         return context.WithValue(ctx, mapCtxKey, m)
39 }
40
41 type ctxKey struct{}
42
43 var mapCtxKey = ctxKey{}