Add depot, attendant, jetfire, optimus, ota services with kustomize overlays
This commit is contained in:
56
services/optimus/handlers/batch.go
Normal file
56
services/optimus/handlers/batch.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"github.com/fiskerinc/cloud-services/services/optimus/services"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/grpc/kafka_grpc"
|
||||
"github.com/fiskerinc/cloud-services/pkg/logger"
|
||||
"github.com/fiskerinc/cloud-services/pkg/validator"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func ProduceSignalsFromMessageBatch(vin string, payload *kafka_grpc.GRPC_BatchPayload) ([]common.CANSignal, error) {
|
||||
var batch []common.CANSignal
|
||||
if payload == nil {
|
||||
return nil, errors.New("payload is nil")
|
||||
}
|
||||
if payload.Data == nil {
|
||||
return nil, errors.New("payload.Data is nil")
|
||||
}
|
||||
// TODO Where to report epoch_usec, dropped, and filtered stats
|
||||
dbcVersion := payload.Version
|
||||
dbc, err := services.GetDBCCollection().Get(dbcVersion)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// r := services.RedisClientPool().GetFromPool()
|
||||
// defer r.Close()
|
||||
|
||||
clickClient, err := services.GetClickhouseClient()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
filters := services.GetVehicleMessageFilters().GetFiltersForVehicle(clickClient, vin)
|
||||
for _, msg := range payload.Data.Frames {
|
||||
if err := validator.ValidateStruct(msg); err != nil {
|
||||
logger.Warn().Str("id", vin).Err(err).Msgf("%+v", msg)
|
||||
continue
|
||||
}
|
||||
|
||||
if !filters.AllowMessage(int(msg.ID), int(msg.GetEpoch())) {
|
||||
continue
|
||||
}
|
||||
|
||||
signals, err := dbc.GenerateCANSignals(vin, msg)
|
||||
if err == nil && len(signals) > 0 {
|
||||
batch = append(batch, signals...)
|
||||
} else if err != nil {
|
||||
logger.At(logger.Warn(), vin, "dbc").Err(err).Send()
|
||||
}
|
||||
}
|
||||
|
||||
return batch, nil
|
||||
}
|
||||
Reference in New Issue
Block a user