From 90fa75e3700c186dd93c1c7a90b74297097b0641 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov <v.tolstov@unistack.org> Date: Fri, 7 Mar 2025 18:21:40 +0300 Subject: [PATCH] broker: add PublishOption Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> --- broker/context.go | 10 ++++++++++ broker/options.go | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/broker/context.go b/broker/context.go index 6115511c..08fe42de 100644 --- a/broker/context.go +++ b/broker/context.go @@ -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 func SetOption(k, v interface{}) Option { return func(o *Options) { diff --git a/broker/options.go b/broker/options.go index a9900921..f98e7a62 100644 --- a/broker/options.go +++ b/broker/options.go @@ -79,11 +79,15 @@ type PublishOptions struct { // BodyOnly flag says the message contains raw body bytes and don't need // codec Marshal method BodyOnly bool + // Context holds custom options + Context context.Context } // NewPublishOptions creates PublishOptions struct func NewPublishOptions(opts ...PublishOption) PublishOptions { - options := PublishOptions{} + options := PublishOptions{ + Context: context.Background(), + } for _, o := range opts { o(&options) }