refactor state to recorder, finish implementing
This commit is contained in:
42
pkg/weather/recorder/recorder.go
Normal file
42
pkg/weather/recorder/recorder.go
Normal file
@ -0,0 +1,42 @@
|
||||
package recorder
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
|
||||
|
||||
"gitea.libretechconsulting.com/rmcguire/ambient-local-exporter/pkg/weather"
|
||||
)
|
||||
|
||||
type WeatherRecorder struct {
|
||||
updates []*weather.WeatherUpdate
|
||||
keep int
|
||||
ctx context.Context
|
||||
tracer trace.Tracer
|
||||
meter metric.Meter
|
||||
*sync.RWMutex
|
||||
}
|
||||
|
||||
type Opts struct {
|
||||
Ctx context.Context
|
||||
KeepLast int
|
||||
}
|
||||
|
||||
func NewWeatherRecorder(opts *Opts) *WeatherRecorder {
|
||||
if opts.KeepLast < 1 {
|
||||
opts.KeepLast = 1
|
||||
}
|
||||
|
||||
return &WeatherRecorder{
|
||||
updates: make([]*weather.WeatherUpdate, 0, opts.KeepLast),
|
||||
keep: opts.KeepLast,
|
||||
ctx: opts.Ctx,
|
||||
tracer: otel.GetTracer(opts.Ctx, "weatherRecorder"),
|
||||
meter: otel.GetMeter(opts.Ctx, "weatherRecorder"),
|
||||
RWMutex: &sync.RWMutex{},
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user