36 lines
892 B
Go
36 lines
892 B
Go
// Copyright 2018 The OpenPitrix Authors. All rights reserved.
|
|
// Use of this source code is governed by a Apache license
|
|
// that can be found in the LICENSE file.
|
|
|
|
package ctxutil
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc/metadata"
|
|
)
|
|
|
|
func GetMessageId(ctx context.Context) []string {
|
|
return GetValueFromContext(ctx, messageIdKey)
|
|
}
|
|
|
|
func SetMessageId(ctx context.Context, messageId []string) context.Context {
|
|
ctx = context.WithValue(ctx, messageIdKey, messageId)
|
|
md, ok := metadata.FromOutgoingContext(ctx)
|
|
if !ok {
|
|
md = metadata.MD{}
|
|
}
|
|
md[messageIdKey] = messageId
|
|
return metadata.NewOutgoingContext(ctx, md)
|
|
}
|
|
|
|
func AddMessageId(ctx context.Context, messageId ...string) context.Context {
|
|
m := GetMessageId(ctx)
|
|
m = append(m, messageId...)
|
|
return SetMessageId(ctx, m)
|
|
}
|
|
|
|
func ClearMessageId(ctx context.Context) context.Context {
|
|
return SetMessageId(ctx, []string{})
|
|
}
|