24 lines
660 B
Go
24 lines
660 B
Go
|
package servertiming
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
// NewContext returns a new Context that carries the Header value h.
|
||
|
func NewContext(ctx context.Context, h *Header) context.Context {
|
||
|
return context.WithValue(ctx, contextKey, h)
|
||
|
}
|
||
|
|
||
|
// FromContext returns the *Header in the context, if any. If no Header
|
||
|
// value exists, nil is returned.
|
||
|
func FromContext(ctx context.Context) *Header {
|
||
|
h, _ := ctx.Value(contextKey).(*Header)
|
||
|
return h
|
||
|
}
|
||
|
|
||
|
type contextKeyType struct{}
|
||
|
|
||
|
// The key where the header value is stored. This is globally unique since
|
||
|
// it uses a custom unexported type. The struct{} costs zero allocations.
|
||
|
var contextKey = contextKeyType(struct{}{})
|