From 293949f081936c369716d0e0eccff1b0ac6b2bd1 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sun, 21 Feb 2021 23:54:59 +0300 Subject: [PATCH] metadata: add Append func to Incoming/Outgoing context Signed-off-by: Vasiliy Tolstov --- metadata/context.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/metadata/context.go b/metadata/context.go index 482d801a..858566d1 100644 --- a/metadata/context.go +++ b/metadata/context.go @@ -106,3 +106,27 @@ func NewOutgoingContext(ctx context.Context, md Metadata) context.Context { ctx = context.WithValue(ctx, mdIncomingKey{}, &rawMetadata{}) return ctx } + +// AppendOutgoingContext apends new md to context +func AppendOutgoingContext(ctx context.Context, md Metadata) context.Context { + omd, ok := FromOutgoingContext(ctx) + if !ok { + return NewOutgoingContext(ctx, md) + } + for k, v := range md { + omd.Set(k, v) + } + return NewOutgoingContext(ctx, omd) +} + +// AppendIncomingContext apends new md to context +func AppendIncomingContext(ctx context.Context, md Metadata) context.Context { + omd, ok := FromIncomingContext(ctx) + if !ok { + return NewIncomingContext(ctx, md) + } + for k, v := range md { + omd.Set(k, v) + } + return NewIncomingContext(ctx, omd) +}