34
info *grpc.UnaryServerInfo,
35
handler grpc.UnaryHandler,
37
>
sdkName, sdkVersion := headers.GetClientNameAndVersion(ctx)
38
>
if sdkName != "" && sdkVersion != "" {
39
>
vi.RecordSDKInfo(sdkName, sdkVersion)
40
>
if err := vi.versionChecker.ClientSupported(ctx); err != nil {
41
return nil, err
42
}
43
}
45
}
46
47
// RecordSDKInfo records name and version tuple in memory
48
>
func (vi *SDKVersionInterceptor) RecordSDKInfo(name, version string) {
sdk_version.go
49
>
info := versioninfo.SDKInfo{Name: name, Version: version}
50
>
51
>
vi.RLock()
52
>
overCap := len(vi.sdkInfoSet) >= vi.maxSetSize
53
>
_, found := vi.sdkInfoSet[info]
54
>
vi.RUnlock()
55
>
56
>
if !overCap && !found {
57
>
vi.Lock()
58
>
vi.sdkInfoSet[info] = struct{}{}
59
>
vi.Unlock()
60
>
}
61
}
62