ITaskLeaseService.cs
935 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace Rcs.Application.Services;
/// <summary>
/// 任务级分布式租约服务。
/// 用于协调分配与执行阶段对同一任务的并发操作。
/// </summary>
public interface ITaskLeaseService
{
Task<ITaskLeaseAcquireResult> TryAcquireAsync(
Guid taskId,
Guid? robotId,
string purpose,
CancellationToken ct = default);
Task<bool> HasActiveLeaseAsync(Guid taskId, CancellationToken ct = default);
}
public interface ITaskLease : IAsyncDisposable
{
Guid TaskId { get; }
string LeaseKey { get; }
string Purpose { get; }
}
public interface ITaskLeaseAcquireResult
{
bool Success { get; }
string Message { get; }
ITaskLease? Lease { get; }
}
public sealed class TaskLeaseAcquireResult : ITaskLeaseAcquireResult
{
public bool Success { get; init; }
public string Message { get; init; } = string.Empty;
public ITaskLease? Lease { get; init; }
}