update for latest micro

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2021-02-18 17:12:24 +03:00
parent f072858e20
commit 9eb8d1ceba
3 changed files with 22 additions and 577 deletions

View File

@@ -18,15 +18,19 @@ var (
var (
// MetadataFunc wil be used if user not provide own func to fill metadata
MetadataFunc = func(ctx context.Context) (context.Context, error) {
_, ok := metadata.Get(ctx, MetadataKey)
md, ok := metadata.FromIncomingContext(ctx)
if ok {
return ctx, nil
if _, ok = md.Get(MetadataKey); ok {
return ctx, nil
}
}
md = metadata.New(1)
id, err := uuid.NewRandom()
if err != nil {
return ctx, err
}
ctx = metadata.Set(ctx, MetadataKey, id.String())
md.Set(MetadataKey, id.String())
ctx = metadata.NewIncomingContext(ctx, md)
return ctx, nil
}
)
@@ -96,8 +100,13 @@ func NewServerSubscriberWrapper() server.SubscriberWrapper {
return func(fn server.SubscriberFunc) server.SubscriberFunc {
return func(ctx context.Context, msg server.Message) error {
var err error
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
md = metadata.New(1)
}
if id, ok := msg.Header()[MetadataKey]; ok {
ctx = metadata.Set(ctx, MetadataKey, id)
md.Set(MetadataKey, id)
ctx = metadata.NewIncomingContext(ctx, md)
} else if ctx, err = MetadataFunc(ctx); err != nil {
return err
}