From 5e26950c5e57bfa2060474d554e19f596f98b6c2 Mon Sep 17 00:00:00 2001 From: Jayant Date: Fri, 2 Feb 2024 19:09:43 +0800 Subject: [PATCH] feat: add GetBackwardValueToSend api to get a single backward value to send from the given context (#164) --- cloud/metainfo/backward.go | 9 +++++++++ cloud/metainfo/backward_test.go | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/cloud/metainfo/backward.go b/cloud/metainfo/backward.go index 71f80005..a380c309 100644 --- a/cloud/metainfo/backward.go +++ b/cloud/metainfo/backward.go @@ -181,6 +181,15 @@ func SendBackwardValuesFromMap(ctx context.Context, kvs map[string]string) (ok b return } +// GetBackwardValueToSend gets a value associated with the given key that is set by +// `SendBackwardValue`, `SendBackwardValues` or `SendBackwardValuesFromMap`. +func GetBackwardValueToSend(ctx context.Context, key string) (val string, ok bool) { + if p, exist := ctx.Value(bwCtxKeySend).(*bwCtxValue); exist { + val, ok = p.get(key) + } + return +} + // AllBackwardValuesToSend retrieves all key-values pairs set by `SendBackwardValue` // or `SendBackwardValues` from the given context. // This function is designed for frameworks, common developers should not use it. diff --git a/cloud/metainfo/backward_test.go b/cloud/metainfo/backward_test.go index 06fe111e..446f7e00 100644 --- a/cloud/metainfo/backward_test.go +++ b/cloud/metainfo/backward_test.go @@ -152,6 +152,10 @@ func TestWithBackwardValues5(t *testing.T) { ok = metainfo.SendBackwardValues(ctx3, "key", "send2", "key1") assert(t, !ok) + val, ok = metainfo.GetBackwardValueToSend(ctx3, "key") + assert(t, ok) + assert(t, val == "send0") + m = metainfo.RecvAllBackwardValues(ctx3) assert(t, len(m) == 2) assert(t, m["key"] == "recv0" && m["key1"] == "recv1", m)