blob: 495b26d40ca21a0d691286e8ace9cfeb47d305f9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
package resources
import (
"fmt"
"log"
"sync"
"codeberg.org/snonux/gonf/internal/resource"
)
var (
registry resources
once sync.Once
mu sync.Mutex
)
func Init() {
once.Do(func() {
registry = new()
})
}
type resources struct {
registered map[string]resource.Resource
}
func new() resources {
return resources{
registered: make(map[string]resource.Resource),
}
}
func Register(res resource.Resource) error {
mu.Lock()
defer mu.Unlock()
if _, exists := registry.registered[res.ID()]; exists {
return fmt.Errorf("resource %v already registered", res)
}
registry.registered[res.ID()] = res
log.Printf("Registered resource %v\n", res)
return nil
}
|