expose useful broker and server methods
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
dc5dc6ab5b
commit
ec3c1a02fc
46
broker/context.go
Normal file
46
broker/context.go
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package broker
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
)
|
||||||
|
|
||||||
|
type brokerKey struct{}
|
||||||
|
|
||||||
|
func FromContext(ctx context.Context) (Broker, bool) {
|
||||||
|
c, ok := ctx.Value(brokerKey{}).(Broker)
|
||||||
|
return c, ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewContext(ctx context.Context, s Broker) context.Context {
|
||||||
|
return context.WithValue(ctx, brokerKey{}, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetSubscribeOption returns a function to setup a context with given value
|
||||||
|
func SetSubscribeOption(k, v interface{}) SubscribeOption {
|
||||||
|
return func(o *SubscribeOptions) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetBrokerOption returns a function to setup a context with given value
|
||||||
|
func SetBrokerOption(k, v interface{}) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetPublishOption returns a function to setup a context with given value
|
||||||
|
func SetPublishOption(k, v interface{}) PublishOption {
|
||||||
|
return func(o *PublishOptions) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
@ -14,3 +14,13 @@ func FromContext(ctx context.Context) (Server, bool) {
|
|||||||
func NewContext(ctx context.Context, s Server) context.Context {
|
func NewContext(ctx context.Context, s Server) context.Context {
|
||||||
return context.WithValue(ctx, serverKey{}, s)
|
return context.WithValue(ctx, serverKey{}, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetServerSubscriberOption returns a function to setup a context with given value
|
||||||
|
func SetServerSubscriberOption(k, v interface{}) SubscriberOption {
|
||||||
|
return func(o *SubscriberOptions) {
|
||||||
|
if o.Context == nil {
|
||||||
|
o.Context = context.Background()
|
||||||
|
}
|
||||||
|
o.Context = context.WithValue(o.Context, k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user