broker: add SetPublishOption
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
		| @@ -42,6 +42,16 @@ func SetSubscribeOption(k, v interface{}) SubscribeOption { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // 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) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| // SetOption returns a function to setup a context with given value | // SetOption returns a function to setup a context with given value | ||||||
| func SetOption(k, v interface{}) Option { | func SetOption(k, v interface{}) Option { | ||||||
| 	return func(o *Options) { | 	return func(o *Options) { | ||||||
|   | |||||||
| @@ -79,11 +79,15 @@ type PublishOptions struct { | |||||||
| 	// BodyOnly flag says the message contains raw body bytes and don't need | 	// BodyOnly flag says the message contains raw body bytes and don't need | ||||||
| 	// codec Marshal method | 	// codec Marshal method | ||||||
| 	BodyOnly bool | 	BodyOnly bool | ||||||
|  | 	// Context holds custom options | ||||||
|  | 	Context context.Context | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewPublishOptions creates PublishOptions struct | // NewPublishOptions creates PublishOptions struct | ||||||
| func NewPublishOptions(opts ...PublishOption) PublishOptions { | func NewPublishOptions(opts ...PublishOption) PublishOptions { | ||||||
| 	options := PublishOptions{} | 	options := PublishOptions{ | ||||||
|  | 		Context: context.Background(), | ||||||
|  | 	} | ||||||
| 	for _, o := range opts { | 	for _, o := range opts { | ||||||
| 		o(&options) | 		o(&options) | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user