using System; namespace Aging.Infrastructure.Contracts { /// /// 预约状态枚举 /// public enum ReservationState { /// /// 活跃状态 /// Active, /// /// 已释放 /// Released, /// /// 冲突状态 /// Conflicted } /// /// 长期预约实体,表示对某个硬件资源的持久占用。 /// 预约期间,其他所有者无法获取该资源。 /// public sealed class ResourceReservation { /// /// 预约唯一标识 /// public string ReservationId { get; } /// /// 被预约的资源键 /// public ResourceKey Resource { get; } /// /// 预约所有者令牌 /// public ResourceOwnerToken Owner { get; } /// /// 预约状态 /// public ReservationState State { get; set; } /// /// 预约创建时间 /// public DateTime ReservedAt { get; } /// /// 预约描述(可选) /// public string? Description { get; set; } /// /// 初始化资源预约实例 /// /// 资源键 /// 所有者令牌 /// 预约描述(可选) public ResourceReservation(ResourceKey resource, ResourceOwnerToken owner, string? description = null) { ReservationId = Guid.NewGuid().ToString(); Resource = resource ?? throw new ArgumentNullException(nameof(resource)); Owner = owner ?? throw new ArgumentNullException(nameof(owner)); State = ReservationState.Active; ReservedAt = DateTime.UtcNow; Description = description; } } }