// Copyright Epic Games, Inc. All Rights Reserved. using System.ComponentModel; using EpicGames.Core; using EpicGames.Serialization; namespace EpicGames.Horde.Telemetry { /// /// Identifier for a telemetry store /// /// Id to construct from [LogValueType] [JsonSchemaString] [TypeConverter(typeof(StringIdTypeConverter))] [StringIdConverter(typeof(TelemetryStoreIdConverter))] [CbConverter(typeof(StringIdCbConverter))] public readonly record struct TelemetryStoreId(StringId Id) { /// /// Default telemetry store for Horde internal metrics /// public static TelemetryStoreId Default { get; } = new TelemetryStoreId("default"); /// /// Constructor /// public TelemetryStoreId(string id) : this(new StringId(id)) { } /// public bool IsEmpty => Id.IsEmpty; /// public override string ToString() => Id.ToString(); } /// /// Converter to and from instances. /// public class TelemetryStoreIdConverter : StringIdConverter { /// public override TelemetryStoreId FromStringId(StringId id) => new TelemetryStoreId(id); /// public override StringId ToStringId(TelemetryStoreId value) => value.Id; } }