Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/flow/internal/testcomponents/singleton.go
4096 views
1
package testcomponents
2
3
import (
4
"context"
5
6
"github.com/go-kit/log"
7
"github.com/grafana/agent/component"
8
)
9
10
func init() {
11
component.Register(component.Registration{
12
Name: "testcomponents.singleton",
13
Args: SingletonArguments{},
14
Exports: SingletonExports{},
15
Singleton: true,
16
17
Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
18
return NewSingleton(opts, args.(SingletonArguments))
19
},
20
})
21
}
22
23
// SingletonArguments configures the testcomponents.singleton component.
24
type SingletonArguments struct{}
25
26
// SingletonExports describes exported fields for the
27
// testcomponents.singleton component.
28
type SingletonExports struct{}
29
30
// Singleton implements the testcomponents.singleton component, which is a
31
// no-op component.
32
type Singleton struct {
33
opts component.Options
34
log log.Logger
35
}
36
37
// NewSingleton creates a new singleton component.
38
func NewSingleton(o component.Options, cfg SingletonArguments) (*Singleton, error) {
39
t := &Singleton{opts: o, log: o.Logger}
40
if err := t.Update(cfg); err != nil {
41
return nil, err
42
}
43
return t, nil
44
}
45
46
var (
47
_ component.Component = (*Passthrough)(nil)
48
)
49
50
// Run implements Component.
51
func (t *Singleton) Run(ctx context.Context) error {
52
<-ctx.Done()
53
return nil
54
}
55
56
// Update implements Component.
57
func (t *Singleton) Update(args component.Arguments) error {
58
return nil
59
}
60
61