submodule对gitea不管用,所以直接拉了一份拉格兰
This commit is contained in:
29
Lagrange.Core/Lagrange.OneBot/Utility/FallbackAsync.cs
Normal file
29
Lagrange.Core/Lagrange.OneBot/Utility/FallbackAsync.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace Lagrange.OneBot.Utility.Fallbacks;
|
||||
|
||||
public class FallbackAsync
|
||||
{
|
||||
private readonly List<Func<CancellationToken, Task<bool>>> _executors = [];
|
||||
|
||||
internal static FallbackAsync Create()
|
||||
{
|
||||
return new();
|
||||
}
|
||||
|
||||
public FallbackAsync Add(Func<CancellationToken, Task<bool>> executor)
|
||||
{
|
||||
_executors.Add(executor);
|
||||
return this;
|
||||
}
|
||||
|
||||
public async Task<bool> ExecuteAsync(CancellationToken token = default)
|
||||
{
|
||||
foreach (var executor in _executors)
|
||||
{
|
||||
if (await executor(token)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user