master
go 172 lines 4.35 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package nginxplus
4
5 func newCache() *cache {
6 return &cache{
7 httpCaches: make(map[string]*cacheHTTPCacheEntry),
8 httpServerZones: make(map[string]*cacheZoneEntry),
9 httpLocationZones: make(map[string]*cacheZoneEntry),
10 httpUpstreams: make(map[string]*cacheUpstreamEntry),
11 httpUpstreamServers: make(map[string]*cacheUpstreamServerEntry),
12 streamServerZones: make(map[string]*cacheZoneEntry),
13 streamUpstreams: make(map[string]*cacheUpstreamEntry),
14 streamUpstreamServers: make(map[string]*cacheUpstreamServerEntry),
15 resolvers: make(map[string]*cacheResolverEntry),
16 }
17 }
18
19 type (
20 cache struct {
21 httpCaches map[string]*cacheHTTPCacheEntry
22 httpServerZones map[string]*cacheZoneEntry
23 httpLocationZones map[string]*cacheZoneEntry
24 httpUpstreams map[string]*cacheUpstreamEntry
25 httpUpstreamServers map[string]*cacheUpstreamServerEntry
26 streamServerZones map[string]*cacheZoneEntry
27 streamUpstreams map[string]*cacheUpstreamEntry
28 streamUpstreamServers map[string]*cacheUpstreamServerEntry
29 resolvers map[string]*cacheResolverEntry
30 }
31 cacheEntry struct {
32 hasCharts bool
33 updated bool
34 notSeenTimes int
35 }
36 cacheHTTPCacheEntry struct {
37 name string
38 cacheEntry
39 }
40 cacheResolverEntry struct {
41 zone string
42 cacheEntry
43 }
44 cacheZoneEntry struct {
45 zone string
46 cacheEntry
47 }
48 cacheUpstreamEntry struct {
49 name string
50 zone string
51 cacheEntry
52 }
53 cacheUpstreamServerEntry struct {
54 name string
55 zone string
56 serverAddr string
57 serverName string
58 cacheEntry
59 }
60 )
61
62 func (c *cache) resetUpdated() {
63 for _, v := range c.httpCaches {
64 v.updated = false
65 }
66 for _, v := range c.httpServerZones {
67 v.updated = false
68 }
69 for _, v := range c.httpLocationZones {
70 v.updated = false
71 }
72 for _, v := range c.httpUpstreams {
73 v.updated = false
74 }
75 for _, v := range c.httpUpstreamServers {
76 v.updated = false
77 }
78 for _, v := range c.streamServerZones {
79 v.updated = false
80 }
81 for _, v := range c.streamUpstreams {
82 v.updated = false
83 }
84 for _, v := range c.streamUpstreamServers {
85 v.updated = false
86 }
87 for _, v := range c.resolvers {
88 v.updated = false
89 }
90 }
91
92 func (c *cache) putHTTPCache(cache string) {
93 v, ok := c.httpCaches[cache]
94 if !ok {
95 v = &cacheHTTPCacheEntry{name: cache}
96 c.httpCaches[cache] = v
97 }
98 v.updated, v.notSeenTimes = true, 0
99 }
100
101 func (c *cache) putHTTPServerZone(zone string) {
102 v, ok := c.httpServerZones[zone]
103 if !ok {
104 v = &cacheZoneEntry{zone: zone}
105 c.httpServerZones[zone] = v
106 }
107 v.updated, v.notSeenTimes = true, 0
108 }
109
110 func (c *cache) putHTTPLocationZone(zone string) {
111 v, ok := c.httpLocationZones[zone]
112 if !ok {
113 v = &cacheZoneEntry{zone: zone}
114 c.httpLocationZones[zone] = v
115 }
116 v.updated, v.notSeenTimes = true, 0
117 }
118
119 func (c *cache) putHTTPUpstream(name, zone string) {
120 v, ok := c.httpUpstreams[name+"_"+zone]
121 if !ok {
122 v = &cacheUpstreamEntry{name: name, zone: zone}
123 c.httpUpstreams[name+"_"+zone] = v
124 }
125 v.updated, v.notSeenTimes = true, 0
126 }
127
128 func (c *cache) putHTTPUpstreamServer(name, serverAddr, serverName, zone string) {
129 v, ok := c.httpUpstreamServers[name+"_"+serverAddr+"_"+zone]
130 if !ok {
131 v = &cacheUpstreamServerEntry{name: name, zone: zone, serverAddr: serverAddr, serverName: serverName}
132 c.httpUpstreamServers[name+"_"+serverAddr+"_"+zone] = v
133 }
134 v.updated, v.notSeenTimes = true, 0
135 }
136
137 func (c *cache) putStreamServerZone(zone string) {
138 v, ok := c.streamServerZones[zone]
139 if !ok {
140 v = &cacheZoneEntry{zone: zone}
141 c.streamServerZones[zone] = v
142 }
143 v.updated, v.notSeenTimes = true, 0
144
145 }
146
147 func (c *cache) putStreamUpstream(name, zone string) {
148 v, ok := c.streamUpstreams[name+"_"+zone]
149 if !ok {
150 v = &cacheUpstreamEntry{name: name, zone: zone}
151 c.streamUpstreams[name+"_"+zone] = v
152 }
153 v.updated, v.notSeenTimes = true, 0
154 }
155
156 func (c *cache) putStreamUpstreamServer(name, serverAddr, serverName, zone string) {
157 v, ok := c.streamUpstreamServers[name+"_"+serverAddr+"_"+zone]
158 if !ok {
159 v = &cacheUpstreamServerEntry{name: name, zone: zone, serverAddr: serverAddr, serverName: serverName}
160 c.streamUpstreamServers[name+"_"+serverAddr+"_"+zone] = v
161 }
162 v.updated, v.notSeenTimes = true, 0
163 }
164
165 func (c *cache) putResolver(zone string) {
166 v, ok := c.resolvers[zone]
167 if !ok {
168 v = &cacheResolverEntry{zone: zone}
169 c.resolvers[zone] = v
170 }
171 v.updated, v.notSeenTimes = true, 0
172 }