broker: add PublishOption

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2025-03-07 18:21:40 +03:00
parent 562b1ab9b7
commit 90fa75e370
2 changed files with 15 additions and 1 deletions

@ -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)
} }