github.com/netdata/go.d.plugin@v0.58.1/agent/discovery/cache.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package discovery
     4  
     5  import (
     6  	"github.com/netdata/go.d.plugin/agent/confgroup"
     7  )
     8  
     9  type cache map[string]*confgroup.Group
    10  
    11  func newCache() *cache {
    12  	return &cache{}
    13  }
    14  
    15  func (c cache) update(groups []*confgroup.Group) {
    16  	if len(groups) == 0 {
    17  		return
    18  	}
    19  	for _, group := range groups {
    20  		if group != nil {
    21  			c[group.Source] = group
    22  		}
    23  	}
    24  }
    25  
    26  func (c cache) reset() {
    27  	for key := range c {
    28  		delete(c, key)
    29  	}
    30  }
    31  
    32  func (c cache) groups() []*confgroup.Group {
    33  	groups := make([]*confgroup.Group, 0, len(c))
    34  	for _, group := range c {
    35  		groups = append(groups, group)
    36  	}
    37  	return groups
    38  }