namespace GFramework.Core.Abstractions.pause;
///
/// 暂停令牌,唯一标识一个暂停请求
///
public readonly struct PauseToken : IEquatable
{
///
/// 令牌 ID
///
public Guid Id { get; }
///
/// 是否为有效令牌
///
public bool IsValid => Id != Guid.Empty;
///
/// 创建暂停令牌
///
/// 令牌 ID
public PauseToken(Guid id)
{
Id = id;
}
///
/// 创建无效令牌
///
public static PauseToken Invalid => new(Guid.Empty);
public bool Equals(PauseToken other) => Id.Equals(other.Id);
public override bool Equals(object? obj) => obj is PauseToken other && Equals(other);
public override int GetHashCode() => Id.GetHashCode();
public static bool operator ==(PauseToken left, PauseToken right) => left.Equals(right);
public static bool operator !=(PauseToken left, PauseToken right) => !left.Equals(right);
public override string ToString() => $"PauseToken({Id})";
}