updates #207
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Broker, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns broker from passed context | ||||||
|  | func MustContext(ctx context.Context) Broker { | ||||||
|  | 	b, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing broker") | ||||||
|  | 	} | ||||||
|  | 	return b | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext savess broker in context | // NewContext savess broker in context | ||||||
| func NewContext(ctx context.Context, s Broker) context.Context { | func NewContext(ctx context.Context, s Broker) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Client, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext get client from context | ||||||
|  | func MustContext(ctx context.Context) Client { | ||||||
|  | 	c, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing client") | ||||||
|  | 	} | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put client in context | // NewContext put client in context | ||||||
| func NewContext(ctx context.Context, c Client) context.Context { | func NewContext(ctx context.Context, c Client) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Codec, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns codec from context | ||||||
|  | func MustContext(ctx context.Context) Codec { | ||||||
|  | 	c, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing codec") | ||||||
|  | 	} | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put codec in context | // NewContext put codec in context | ||||||
| func NewContext(ctx context.Context, c Codec) context.Context { | func NewContext(ctx context.Context, c Codec) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Config, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns store from context | ||||||
|  | func MustContext(ctx context.Context) Config { | ||||||
|  | 	c, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing config") | ||||||
|  | 	} | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put store in context | // NewContext put store in context | ||||||
| func NewContext(ctx context.Context, c Config) context.Context { | func NewContext(ctx context.Context, c Config) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Flow, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns Flow from context | ||||||
|  | func MustContext(ctx context.Context) Flow { | ||||||
|  | 	f, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing flow") | ||||||
|  | 	} | ||||||
|  | 	return f | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext stores Flow to context | // NewContext stores Flow to context | ||||||
| func NewContext(ctx context.Context, f Flow) context.Context { | func NewContext(ctx context.Context, f Flow) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @@ -31,6 +31,7 @@ require ( | |||||||
| 	github.com/opencontainers/runtime-spec v1.2.0 // indirect | 	github.com/opencontainers/runtime-spec v1.2.0 // indirect | ||||||
| 	github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect | 	github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect | ||||||
| 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect | ||||||
|  | 	github.com/rogpeppe/go-internal v1.13.1 // indirect | ||||||
| 	github.com/sirupsen/logrus v1.9.3 // indirect | 	github.com/sirupsen/logrus v1.9.3 // indirect | ||||||
| 	github.com/stretchr/testify v1.10.0 // indirect | 	github.com/stretchr/testify v1.10.0 // indirect | ||||||
| 	go.uber.org/goleak v1.3.0 // indirect | 	go.uber.org/goleak v1.3.0 // indirect | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.sum
									
									
									
									
									
								
							| @@ -57,8 +57,7 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI | |||||||
| github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= | github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= | ||||||
| github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= | ||||||
| github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= | github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= | ||||||
| github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= |  | ||||||
| github.com/silas/dag v0.0.0-20220518035006-a7e85ada93c5 h1:G/FZtUu7a6NTWl3KUHMV9jkLAh/Rvtf03NWMHaEDl+E= | github.com/silas/dag v0.0.0-20220518035006-a7e85ada93c5 h1:G/FZtUu7a6NTWl3KUHMV9jkLAh/Rvtf03NWMHaEDl+E= | ||||||
| github.com/silas/dag v0.0.0-20220518035006-a7e85ada93c5/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= | github.com/silas/dag v0.0.0-20220518035006-a7e85ada93c5/go.mod h1:7RTUFBdIRC9nZ7/3RyRNH1bdqIShrDejd1YbLwgPS+I= | ||||||
| github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= | ||||||
|   | |||||||
| @@ -4,17 +4,6 @@ import "context" | |||||||
|  |  | ||||||
| type loggerKey struct{} | type loggerKey struct{} | ||||||
|  |  | ||||||
| // MustContext returns logger from passed context or DefaultLogger if empty |  | ||||||
| func MustContext(ctx context.Context) Logger { |  | ||||||
| 	if ctx == nil { |  | ||||||
| 		return DefaultLogger.Clone() |  | ||||||
| 	} |  | ||||||
| 	if l, ok := ctx.Value(loggerKey{}).(Logger); ok && l != nil { |  | ||||||
| 		return l |  | ||||||
| 	} |  | ||||||
| 	return DefaultLogger.Clone() |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // FromContext returns logger from passed context | // FromContext returns logger from passed context | ||||||
| func FromContext(ctx context.Context) (Logger, bool) { | func FromContext(ctx context.Context) (Logger, bool) { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
| @@ -24,6 +13,15 @@ func FromContext(ctx context.Context) (Logger, bool) { | |||||||
| 	return l, ok | 	return l, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns logger from passed context or DefaultLogger if empty | ||||||
|  | func MustContext(ctx context.Context) Logger { | ||||||
|  | 	l, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing logger") | ||||||
|  | 	} | ||||||
|  | 	return l | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext stores logger into passed context | // NewContext stores logger into passed context | ||||||
| func NewContext(ctx context.Context, l Logger) context.Context { | func NewContext(ctx context.Context, l Logger) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -11,34 +11,6 @@ type ( | |||||||
| 	mdKey         struct{} | 	mdKey         struct{} | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // MustIncomingContext returns metadata from incoming ctx |  | ||||||
| // returned metadata shoud not be modified or race condition happens. |  | ||||||
| // If metadata not exists panics. |  | ||||||
| func MustIncomingContext(ctx context.Context) Metadata { |  | ||||||
| 	if ctx == nil { |  | ||||||
| 		panic("missing metadata") |  | ||||||
| 	} |  | ||||||
| 	md, ok := ctx.Value(mdIncomingKey{}).(*rawMetadata) |  | ||||||
| 	if !ok { |  | ||||||
| 		panic("missing metadata") |  | ||||||
| 	} |  | ||||||
| 	return md.md |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // MustOutgoingContext returns metadata from outgoing ctx |  | ||||||
| // returned metadata shoud not be modified or race condition happens. |  | ||||||
| // If metadata not exists panics. |  | ||||||
| func MustOutgoingContext(ctx context.Context) Metadata { |  | ||||||
| 	if ctx == nil { |  | ||||||
| 		panic("missing metadata") |  | ||||||
| 	} |  | ||||||
| 	md, ok := ctx.Value(mdOutgoingKey{}).(*rawMetadata) |  | ||||||
| 	if !ok { |  | ||||||
| 		panic("missing metadata") |  | ||||||
| 	} |  | ||||||
| 	return md.md |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // FromIncomingContext returns metadata from incoming ctx | // FromIncomingContext returns metadata from incoming ctx | ||||||
| // returned metadata shoud not be modified or race condition happens | // returned metadata shoud not be modified or race condition happens | ||||||
| func FromIncomingContext(ctx context.Context) (Metadata, bool) { | func FromIncomingContext(ctx context.Context) (Metadata, bool) { | ||||||
| @@ -52,6 +24,17 @@ func FromIncomingContext(ctx context.Context) (Metadata, bool) { | |||||||
| 	return md.md, ok | 	return md.md, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustIncomingContext returns metadata from incoming ctx | ||||||
|  | // returned metadata shoud not be modified or race condition happens. | ||||||
|  | // If metadata not exists panics. | ||||||
|  | func MustIncomingContext(ctx context.Context) Metadata { | ||||||
|  | 	md, ok := FromIncomingContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing metadata") | ||||||
|  | 	} | ||||||
|  | 	return md | ||||||
|  | } | ||||||
|  |  | ||||||
| // FromOutgoingContext returns metadata from outgoing ctx | // FromOutgoingContext returns metadata from outgoing ctx | ||||||
| // returned metadata shoud not be modified or race condition happens | // returned metadata shoud not be modified or race condition happens | ||||||
| func FromOutgoingContext(ctx context.Context) (Metadata, bool) { | func FromOutgoingContext(ctx context.Context) (Metadata, bool) { | ||||||
| @@ -65,6 +48,17 @@ func FromOutgoingContext(ctx context.Context) (Metadata, bool) { | |||||||
| 	return md.md, ok | 	return md.md, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustOutgoingContext returns metadata from outgoing ctx | ||||||
|  | // returned metadata shoud not be modified or race condition happens. | ||||||
|  | // If metadata not exists panics. | ||||||
|  | func MustOutgoingContext(ctx context.Context) Metadata { | ||||||
|  | 	md, ok := FromOutgoingContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing metadata") | ||||||
|  | 	} | ||||||
|  | 	return md | ||||||
|  | } | ||||||
|  |  | ||||||
| // FromContext returns metadata from the given context | // FromContext returns metadata from the given context | ||||||
| // returned metadata shoud not be modified or race condition happens | // returned metadata shoud not be modified or race condition happens | ||||||
| func FromContext(ctx context.Context) (Metadata, bool) { | func FromContext(ctx context.Context) (Metadata, bool) { | ||||||
| @@ -78,6 +72,16 @@ func FromContext(ctx context.Context) (Metadata, bool) { | |||||||
| 	return md.md, ok | 	return md.md, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns metadata from the given context | ||||||
|  | // returned metadata shoud not be modified or race condition happens | ||||||
|  | func MustContext(ctx context.Context) Metadata { | ||||||
|  | 	md, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing metadata") | ||||||
|  | 	} | ||||||
|  | 	return md | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext creates a new context with the given metadata | // NewContext creates a new context with the given metadata | ||||||
| func NewContext(ctx context.Context, md Metadata) context.Context { | func NewContext(ctx context.Context, md Metadata) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
| @@ -139,7 +143,7 @@ func AppendOutgoingContext(ctx context.Context, kv ...string) context.Context { | |||||||
| 	for k, v := range md { | 	for k, v := range md { | ||||||
| 		omd.Set(k, v) | 		omd.Set(k, v) | ||||||
| 	} | 	} | ||||||
| 	return NewOutgoingContext(ctx, omd) | 	return ctx | ||||||
| } | } | ||||||
|  |  | ||||||
| // AppendIncomingContext apends new md to context | // AppendIncomingContext apends new md to context | ||||||
| @@ -155,5 +159,21 @@ func AppendIncomingContext(ctx context.Context, kv ...string) context.Context { | |||||||
| 	for k, v := range md { | 	for k, v := range md { | ||||||
| 		omd.Set(k, v) | 		omd.Set(k, v) | ||||||
| 	} | 	} | ||||||
| 	return NewIncomingContext(ctx, omd) | 	return ctx | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AppendContext apends new md to context | ||||||
|  | func AppendContext(ctx context.Context, kv ...string) context.Context { | ||||||
|  | 	md, ok := Pairs(kv...) | ||||||
|  | 	if !ok { | ||||||
|  | 		return ctx | ||||||
|  | 	} | ||||||
|  | 	omd, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		return NewContext(ctx, md) | ||||||
|  | 	} | ||||||
|  | 	for k, v := range md { | ||||||
|  | 		omd.Set(k, v) | ||||||
|  | 	} | ||||||
|  | 	return ctx | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,8 +32,8 @@ func TestMultipleUsage(t *testing.T) { | |||||||
| 		m.Del("key1_3") | 		m.Del("key1_3") | ||||||
| 		return ctx | 		return ctx | ||||||
| 	}(ctx) | 	}(ctx) | ||||||
| 	t.Logf("imd %#+v", imd) | 	_ = imd | ||||||
| 	t.Logf("omd %#+v", omd) | 	_ = omd | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestMetadataSetMultiple(t *testing.T) { | func TestMetadataSetMultiple(t *testing.T) { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Meter, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext get meter from context | ||||||
|  | func MustContext(ctx context.Context) Meter { | ||||||
|  | 	m, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing meter") | ||||||
|  | 	} | ||||||
|  | 	return m | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put meter in context | // NewContext put meter in context | ||||||
| func NewContext(ctx context.Context, c Meter) context.Context { | func NewContext(ctx context.Context, c Meter) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Register, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext get register from context | ||||||
|  | func MustContext(ctx context.Context) Register { | ||||||
|  | 	r, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing register") | ||||||
|  | 	} | ||||||
|  | 	return r | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put register in context | // NewContext put register in context | ||||||
| func NewContext(ctx context.Context, c Register) context.Context { | func NewContext(ctx context.Context, c Register) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Router, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext get router from context | ||||||
|  | func MustContext(ctx context.Context) Router { | ||||||
|  | 	r, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing router") | ||||||
|  | 	} | ||||||
|  | 	return r | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put router in context | // NewContext put router in context | ||||||
| func NewContext(ctx context.Context, c Router) context.Context { | func NewContext(ctx context.Context, c Router) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Server, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns Server from context | ||||||
|  | func MustContext(ctx context.Context) Server { | ||||||
|  | 	s, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing server") | ||||||
|  | 	} | ||||||
|  | 	return s | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext stores Server to context | // NewContext stores Server to context | ||||||
| func NewContext(ctx context.Context, s Server) context.Context { | func NewContext(ctx context.Context, s Server) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -15,6 +15,15 @@ func FromContext(ctx context.Context) (Store, bool) { | |||||||
| 	return c, ok | 	return c, ok | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext get store from context | ||||||
|  | func MustContext(ctx context.Context) Store { | ||||||
|  | 	s, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing store") | ||||||
|  | 	} | ||||||
|  | 	return s | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext put store in context | // NewContext put store in context | ||||||
| func NewContext(ctx context.Context, c Store) context.Context { | func NewContext(ctx context.Context, c Store) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
| @@ -18,6 +18,15 @@ func FromContext(ctx context.Context) (Tracer, bool) { | |||||||
| 	return nil, false | 	return nil, false | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // MustContext returns a tracer from context | ||||||
|  | func MustContext(ctx context.Context) Tracer { | ||||||
|  | 	t, ok := FromContext(ctx) | ||||||
|  | 	if !ok { | ||||||
|  | 		panic("missing tracer") | ||||||
|  | 	} | ||||||
|  | 	return t | ||||||
|  | } | ||||||
|  |  | ||||||
| // NewContext saves the tracer in the context | // NewContext saves the tracer in the context | ||||||
| func NewContext(ctx context.Context, tracer Tracer) context.Context { | func NewContext(ctx context.Context, tracer Tracer) context.Context { | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user