Files
esdi/providers/providers.go
T

56 lines
1.4 KiB
Go

// Package providers
package providers
import (
"log/slog"
"esdi/providers/beamng"
"esdi/providers/iracing"
"esdi/telemetry"
bngsdk "github.com/ESilva15/gobngsdk"
"github.com/ESilva15/goirsdk"
)
// Make this be some kind of struct where we can access a function that returns
// the selected provider by its name
type Provider struct {
Name string
NewProvider func(*slog.Logger) telemetry.TelemetryProvider
IsRunning func() bool // To check if this provider is up and running
}
var Providers = map[string]Provider{
beamng.NAME: {
Name: beamng.NAME,
NewProvider: NewBeamNGProvider,
IsRunning: beamng.IsRunning,
},
iracing.NAME: {
Name: iracing.NAME,
NewProvider: NewLiveIRacingProvider,
IsRunning: iracing.IsRunning,
},
}
func NewLiveIRacingProvider(logger *slog.Logger) telemetry.TelemetryProvider {
provider, _ := iracing.NewIRacingProvider(logger, goirsdk.Options{
Logger: logger,
SourceType: goirsdk.SharedMemoryFile,
})
return provider
}
func NewBeamNGProvider(logger *slog.Logger) telemetry.TelemetryProvider {
// TODO: these should come from some kind of config
provider, _ := beamng.NewBeamNGProvider(logger, &bngsdk.Options{
Logger: logger.With("TelemetryProvider", beamng.NAME),
SourceType: bngsdk.UDPData,
ImportUDPAddress: "127.0.0.1",
ImportUDPPort: 4444,
})
return provider
}