From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Aging.Infrastructure/Contracts/IResourceManager.cs |   84 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 0 deletions(-)

diff --git a/Aging.Infrastructure/Contracts/IResourceManager.cs b/Aging.Infrastructure/Contracts/IResourceManager.cs
new file mode 100644
index 0000000..3d3b09a
--- /dev/null
+++ b/Aging.Infrastructure/Contracts/IResourceManager.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Aging.Infrastructure.Contracts
+{
+    /// <summary>
+    /// 璧勬簮鍐茬獊寮傚父銆�
+    /// 褰撳皾璇曢绾﹀凡琚叾浠栨墍鏈夎�呭崰鐢ㄧ殑璧勬簮鏃舵姏鍑恒��
+    /// </summary>
+    public sealed class ResourceConflictException : Exception
+    {
+        /// <summary>
+        /// 鍒濆鍖栬祫婧愬啿绐佸紓甯稿疄渚�
+        /// </summary>
+        /// <param name="message">鍐茬獊鎻忚堪淇℃伅</param>
+        public ResourceConflictException(string message) : base(message)
+        {
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栬祫婧愬啿绐佸紓甯稿疄渚�
+        /// </summary>
+        /// <param name="message">鍐茬獊鎻忚堪淇℃伅</param>
+        /// <param name="innerException">鍐呴儴寮傚父</param>
+        public ResourceConflictException(string message, Exception innerException) : base(message, innerException)
+        {
+        }
+    }
+
+    /// <summary>
+    /// 璧勬簮绠$悊鎺ュ彛銆�
+    /// 鎻愪緵纭欢璧勬簮鐨勯绾︺�佺绾﹁幏鍙栧拰閲婃斁鍔熻兘锛岀‘淇濊祫婧愪笉琚涓細璇濆悓鏃跺崰鐢ㄣ��
+    /// </summary>
+    public interface IResourceManager
+    {
+        /// <summary>
+        /// 寮傛棰勭害璧勬簮銆�
+        /// 鍒涘缓闀挎湡棰勭害锛岄樆姝㈠叾浠栨墍鏈夎�呬娇鐢ㄨ璧勬簮銆�
+        /// </summary>
+        /// <param name="owner">鎵�鏈夎�呬护鐗�</param>
+        /// <param name="resource">璧勬簮閿�</param>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        /// <returns>璧勬簮棰勭害瀹炰綋</returns>
+        /// <exception cref="ResourceConflictException">璧勬簮宸茶鍏朵粬鎵�鏈夎�呴绾︽椂鎶涘嚭</exception>
+        Task<ResourceReservation> ReserveAsync(ResourceOwnerToken owner, ResourceKey resource, CancellationToken ct);
+
+        /// <summary>
+        /// 寮傛鑾峰彇鎿嶄綔绉熺害銆�
+        /// 鍦ㄦ墽琛屽叿浣撶‖浠舵搷浣滃墠璋冪敤锛岀‘淇濇搷浣滄湡闂磋祫婧愪笉琚姠鍗犮��
+        /// </summary>
+        /// <param name="owner">鎵�鏈夎�呬护鐗�</param>
+        /// <param name="resource">璧勬簮閿�</param>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        /// <returns>鎿嶄綔绉熺害</returns>
+        /// <exception cref="InvalidOperationException">璧勬簮鏈绾︽垨鎵�鏈夎�呬笉鍖归厤鏃舵姏鍑�</exception>
+        Task<IOperationLease> AcquireOperationAsync(ResourceOwnerToken owner, ResourceKey resource, CancellationToken ct);
+
+        /// <summary>
+        /// 寮傛閲婃斁璧勬簮棰勭害銆�
+        /// 鍙栨秷瀵硅祫婧愮殑鍗犵敤锛屽厑璁稿叾浠栨墍鏈夎�呴绾︺��
+        /// </summary>
+        /// <param name="owner">鎵�鏈夎�呬护鐗�</param>
+        /// <param name="resource">璧勬簮閿�</param>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        Task ReleaseReservationAsync(ResourceOwnerToken owner, ResourceKey resource, CancellationToken ct);
+
+        /// <summary>
+        /// 妫�鏌ヨ祫婧愭槸鍚﹀凡琚绾�
+        /// </summary>
+        /// <param name="resource">璧勬簮閿�</param>
+        /// <param name="reservation">杈撳嚭棰勭害瀹炰綋锛堝鏋滃凡棰勭害锛�</param>
+        /// <returns>璧勬簮鏄惁宸茶棰勭害</returns>
+        bool IsReserved(ResourceKey resource, out ResourceReservation? reservation);
+
+        /// <summary>
+        /// 楠岃瘉鎵�鏈夎�呬护鐗屾槸鍚﹀尮閰嶆寚瀹氳祫婧愮殑棰勭害
+        /// </summary>
+        /// <param name="owner">鎵�鏈夎�呬护鐗�</param>
+        /// <param name="resource">璧勬簮閿�</param>
+        /// <returns>鎵�鏈夎�呮槸鍚﹀尮閰�</returns>
+        bool ValidateOwner(ResourceOwnerToken owner, ResourceKey resource);
+    }
+}

--
Gitblit v1.9.1