github.com/netdata/go.d.plugin@v0.58.1/modules/nginxplus/cache.go (about) 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 }