...
1
16
17 package cached
18
19 import (
20 "sync"
21
22 "k8s.io/client-go/openapi"
23 )
24
25 type groupversion struct {
26 delegate openapi.GroupVersion
27
28 lock sync.Mutex
29 docs map[string]docInfo
30 }
31
32 type docInfo struct {
33 data []byte
34 err error
35 }
36
37 func newGroupVersion(delegate openapi.GroupVersion) *groupversion {
38 return &groupversion{
39 delegate: delegate,
40 }
41 }
42
43 func (g *groupversion) Schema(contentType string) ([]byte, error) {
44 g.lock.Lock()
45 defer g.lock.Unlock()
46
47 cachedInfo, ok := g.docs[contentType]
48 if !ok {
49 if g.docs == nil {
50 g.docs = make(map[string]docInfo)
51 }
52
53 cachedInfo.data, cachedInfo.err = g.delegate.Schema(contentType)
54 g.docs[contentType] = cachedInfo
55 }
56
57 return cachedInfo.data, cachedInfo.err
58 }
59
View as plain text