// Package convert 提供领域模型(internal/model)与 protobuf 数据契约 // (pkg/collectorpb)之间的转换函数,供 Agent 上报与 Gateway 接收两端共用。 package convert import ( "git.opencomputing.cn/yumoqing/host-metrics-collector/internal/model" "git.opencomputing.cn/yumoqing/host-metrics-collector/pkg/collectorpb" ) // SampleToPB 将内部指标样本转换为 protobuf MetricSample。 func SampleToPB(s model.Sample) *collectorpb.MetricSample { return &collectorpb.MetricSample{ Name: s.Name, Value: s.Value, Timestamp: s.Timestamp, Labels: s.Labels, } } // SampleFromPB 将 protobuf MetricSample 转换为内部指标样本。 func SampleFromPB(s *collectorpb.MetricSample) model.Sample { if s == nil { return model.Sample{} } return model.Sample{ Name: s.Name, Value: s.Value, Timestamp: s.Timestamp, Labels: s.Labels, } } // LogToPB 将内部日志记录转换为 protobuf LogEntry。 func LogToPB(r model.LogRecord) *collectorpb.LogEntry { return &collectorpb.LogEntry{ Timestamp: r.Timestamp, Level: r.Level, Source: r.Source, Message: r.Message, Fields: r.Fields, File: r.File, Offset: r.Offset, } } // LogFromPB 将 protobuf LogEntry 转换为内部日志记录。 func LogFromPB(e *collectorpb.LogEntry) model.LogRecord { if e == nil { return model.LogRecord{} } return model.LogRecord{ Timestamp: e.Timestamp, Level: e.Level, Source: e.Source, Message: e.Message, Fields: e.Fields, File: e.File, Offset: e.Offset, } }