steam-deck-tools/CommonHelpers/TimedValue.cs

51 lines
1.1 KiB
C#
Raw Normal View History

2023-02-08 14:15:35 +01:00
namespace CommonHelpers
{
public struct TimedValue<T> where T : struct
2023-02-08 14:15:35 +01:00
{
public T Value { get; }
public DateTime ExpiryDate { get; }
public bool Valid
{
get => !Expired;
}
public bool Expired
{
get => ExpiryDate < DateTime.UtcNow;
}
public TimedValue(T value, TimeSpan ts)
{
this.Value = value;
this.ExpiryDate = DateTime.UtcNow.Add(ts);
}
public TimedValue(T value, int timeoutMs)
: this(value, TimeSpan.FromMilliseconds(timeoutMs))
{
}
public bool TryGetValue(out T value)
{
value = this.Value;
return Valid;
}
public T? GetValue()
{
return Valid ? Value : null;
}
public T GetValueOrDefault(T defaultValue)
{
return Valid ? Value : defaultValue;
}
2023-02-08 14:15:35 +01:00
public static implicit operator T?(TimedValue<T> tv)
{
return tv.GetValue();
2023-02-08 14:15:35 +01:00
}
}
}