...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package clientv3
16
17 import (
18 "context"
19
20 "go.etcd.io/etcd/api/v3/v3rpc/rpctypes"
21 "go.etcd.io/etcd/api/v3/version"
22 "google.golang.org/grpc/metadata"
23 )
24
25
26
27 func WithRequireLeader(ctx context.Context) context.Context {
28 md, ok := metadata.FromOutgoingContext(ctx)
29 if !ok {
30 md = metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
31 return metadata.NewOutgoingContext(ctx, md)
32 }
33 copied := md.Copy()
34
35 copied.Set(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
36 return metadata.NewOutgoingContext(ctx, copied)
37 }
38
39
40 func withVersion(ctx context.Context) context.Context {
41 md, ok := metadata.FromOutgoingContext(ctx)
42 if !ok {
43 md = metadata.Pairs(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
44 return metadata.NewOutgoingContext(ctx, md)
45 }
46 copied := md.Copy()
47
48 copied.Set(rpctypes.MetadataClientAPIVersionKey, version.APIVersion)
49 return metadata.NewOutgoingContext(ctx, copied)
50 }
51
View as plain text