MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / New

Function New

pkg/component/component.go:154–244  ·  view source on GitHub ↗

New returns a new component.

(logger log.Stack, config *Config, opts ...Option)

Source from the content-addressed store, hash-verified

152
153// New returns a new component.
154func New(logger log.Stack, config *Config, opts ...Option) (c *Component, err error) {
155 ctx, cancel := context.WithCancel(context.Background())
156 defer func() {
157 if err != nil {
158 cancel()
159 }
160 }()
161
162 ctx = log.NewContext(ctx, logger)
163
164 c = &Component{
165 ctx: ctx,
166 cancelCtx: cancel,
167 terminationSignals: make(chan os.Signal),
168
169 config: config,
170 logger: logger,
171
172 tcpListeners: make(map[string]*listener),
173
174 taskStarter: task.StartTaskFunc(task.DefaultStartTask),
175 }
176
177 c.healthHandler, err = healthcheck.NewDefaultHealthChecker()
178 if err != nil {
179 return nil, err
180 }
181
182 c.componentKEKLabeler, err = config.KeyVault.ComponentKEKLabeler()
183 if err != nil {
184 return nil, err
185 }
186 c.keyService, err = config.KeyVault.KeyService(ctx, c)
187 if err != nil {
188 return nil, err
189 }
190
191 c.limiter, err = ratelimit.New(ctx, config.RateLimiting, config.Blob, c)
192 if err != nil {
193 return nil, err
194 }
195
196 for _, opt := range opts {
197 opt(c)
198 }
199
200 fpsFetcher, err := config.FrequencyPlansFetcher(ctx, c)
201 if err != nil {
202 return nil, err
203 }
204 c.frequencyPlans = frequencyplans.NewStore(fpsFetcher)
205
206 caStoreFetcher, err := config.MTLSAuthCAStoreFetcher(ctx, c)
207 if err != nil {
208 return nil, err
209 }
210 c.caStore, err = mtls.NewCAStore(ctx, caStoreFetcher)
211 if err != nil {

Callers 14

TestContextDecouplingFunction · 0.92
TestNewFunction · 0.92
TestLoggerFunction · 0.92
TestHTTPFunction · 0.92
TestGRPCFunction · 0.92
TestContextFunction · 0.92
TestHooksFunction · 0.92
TestPeersFunction · 0.92
NewComponentFunction · 0.92
start.goFile · 0.92
TestTaskBackoffResetFunction · 0.70
TestTasksFunction · 0.70

Calls 15

NewContextFunction · 0.92
StartTaskFuncFuncType · 0.92
NewDefaultHealthCheckerFunction · 0.92
NewFunction · 0.92
NewStoreFunction · 0.92
NewCAStoreFunction · 0.92
NewServerFunction · 0.92
versionCheckTaskFunction · 0.85
FrequencyPlansFetcherMethod · 0.80
initWebMethod · 0.80
initACMEMethod · 0.80

Tested by 11

TestContextDecouplingFunction · 0.74
TestNewFunction · 0.74
TestLoggerFunction · 0.74
TestHTTPFunction · 0.74
TestGRPCFunction · 0.74
TestContextFunction · 0.74
TestHooksFunction · 0.74
TestPeersFunction · 0.74
TestTaskBackoffResetFunction · 0.56
TestTasksFunction · 0.56
TestPProfFunction · 0.56