[backend/core] Refactor EventHelpers
This commit is contained in:
parent
b504bf2548
commit
8cc4a4afc2
1 changed files with 7 additions and 6 deletions
|
@ -2,17 +2,18 @@ namespace Iceshrimp.Backend.Core.Helpers;
|
||||||
|
|
||||||
public sealed class AsyncAutoResetEvent(bool signaled = false)
|
public sealed class AsyncAutoResetEvent(bool signaled = false)
|
||||||
{
|
{
|
||||||
|
public bool Signaled { get; private set; } = signaled;
|
||||||
|
|
||||||
private readonly List<TaskCompletionSource<bool>> _noResetTaskCompletionSources = [];
|
private readonly List<TaskCompletionSource<bool>> _noResetTaskCompletionSources = [];
|
||||||
private readonly List<TaskCompletionSource<bool>> _taskCompletionSources = [];
|
private readonly List<TaskCompletionSource<bool>> _taskCompletionSources = [];
|
||||||
public bool Signaled => signaled;
|
|
||||||
|
|
||||||
public Task<bool> WaitAsync(CancellationToken cancellationToken = default)
|
public Task<bool> WaitAsync(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
lock (_taskCompletionSources)
|
lock (_taskCompletionSources)
|
||||||
{
|
{
|
||||||
if (signaled)
|
if (Signaled)
|
||||||
{
|
{
|
||||||
signaled = false;
|
Signaled = false;
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +28,7 @@ public sealed class AsyncAutoResetEvent(bool signaled = false)
|
||||||
{
|
{
|
||||||
lock (_taskCompletionSources)
|
lock (_taskCompletionSources)
|
||||||
{
|
{
|
||||||
if (signaled)
|
if (Signaled)
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
|
|
||||||
var tcs = new TaskCompletionSource<bool>();
|
var tcs = new TaskCompletionSource<bool>();
|
||||||
|
@ -41,7 +42,7 @@ public sealed class AsyncAutoResetEvent(bool signaled = false)
|
||||||
{
|
{
|
||||||
lock (_taskCompletionSources)
|
lock (_taskCompletionSources)
|
||||||
{
|
{
|
||||||
signaled = true;
|
Signaled = true;
|
||||||
foreach (var tcs in _noResetTaskCompletionSources.ToList())
|
foreach (var tcs in _noResetTaskCompletionSources.ToList())
|
||||||
{
|
{
|
||||||
_noResetTaskCompletionSources.Remove(tcs);
|
_noResetTaskCompletionSources.Remove(tcs);
|
||||||
|
@ -50,7 +51,7 @@ public sealed class AsyncAutoResetEvent(bool signaled = false)
|
||||||
|
|
||||||
if (_taskCompletionSources.Count == 0) return;
|
if (_taskCompletionSources.Count == 0) return;
|
||||||
|
|
||||||
signaled = false;
|
Signaled = false;
|
||||||
foreach (var tcs in _taskCompletionSources.ToList())
|
foreach (var tcs in _taskCompletionSources.ToList())
|
||||||
{
|
{
|
||||||
_taskCompletionSources.Remove(tcs);
|
_taskCompletionSources.Remove(tcs);
|
||||||
|
|
Loading…
Add table
Reference in a new issue