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