| 12345678910111213141516171819202122232425262728293031323334 |
- package core
- import (
- "context"
- )
- // XrayKey is the key type of Instance in Context, exported for test.
- type XrayKey int
- const xrayKey XrayKey = 1
- // FromContext returns an Instance from the given context, or nil if the context doesn't contain one.
- func FromContext(ctx context.Context) *Instance {
- if s, ok := ctx.Value(xrayKey).(*Instance); ok {
- return s
- }
- return nil
- }
- // MustFromContext returns an Instance from the given context, or panics if not present.
- func MustFromContext(ctx context.Context) *Instance {
- x := FromContext(ctx)
- if x == nil {
- panic("X is not in context.")
- }
- return x
- }
- func WithContext(ctx context.Context, v *Instance) context.Context {
- if FromContext(ctx) != v {
- ctx = context.WithValue(ctx, xrayKey, v)
- }
- return ctx
- }
|