github.com/netdata/go.d.plugin@v0.58.1/agent/module/registry.go (about)

     1  // SPDX-License-Identifier: GPL-3.0-or-later
     2  
     3  package module
     4  
     5  import "fmt"
     6  
     7  const (
     8  	UpdateEvery        = 1
     9  	AutoDetectionRetry = 0
    10  	Priority           = 70000
    11  )
    12  
    13  // Defaults is a set of module default parameters.
    14  type Defaults struct {
    15  	UpdateEvery        int
    16  	AutoDetectionRetry int
    17  	Priority           int
    18  	Disabled           bool
    19  }
    20  
    21  type (
    22  	// Creator is a Job builder.
    23  	Creator struct {
    24  		Defaults
    25  		Create          func() Module
    26  		JobConfigSchema string
    27  	}
    28  	// Registry is a collection of Creators.
    29  	Registry map[string]Creator
    30  )
    31  
    32  // DefaultRegistry DefaultRegistry.
    33  var DefaultRegistry = Registry{}
    34  
    35  // Register registers a module in the DefaultRegistry.
    36  func Register(name string, creator Creator) {
    37  	DefaultRegistry.Register(name, creator)
    38  }
    39  
    40  // Register registers a module.
    41  func (r Registry) Register(name string, creator Creator) {
    42  	if _, ok := r[name]; ok {
    43  		panic(fmt.Sprintf("%s is already in registry", name))
    44  	}
    45  	r[name] = creator
    46  }