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 }