Add docker execution environment

This commit is contained in:
Stone_Red
2025-12-27 00:08:01 +01:00
parent 252aca98b4
commit bf1b5506c0
31 changed files with 848 additions and 25 deletions
@@ -0,0 +1,57 @@
namespace RemoteExec.Shared.Utilities;
public class CompletableEventArgs : EventArgs
{
private readonly TaskCompletionSource<bool> tcs = new(TaskCreationOptions.RunContinuationsAsynchronously);
public void SetCompleted()
{
_ = tcs.TrySetResult(true);
}
public Task WaitAsync(CancellationToken cancellationToken = default)
{
if (cancellationToken.CanBeCanceled)
{
_ = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
}
return tcs.Task;
}
}
public class CompletableEventArgs<T> : EventArgs
{
private readonly TaskCompletionSource<T> tcs = new(TaskCreationOptions.RunContinuationsAsynchronously);
public void SetCompleted(T result)
{
_ = tcs.TrySetResult(result);
}
public Task<T> WaitAsync(CancellationToken cancellationToken = default)
{
if (cancellationToken.CanBeCanceled)
{
_ = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
}
return tcs.Task;
}
}
public class CompletableEventArgs<TValue, TResult>(TValue value)
{
public TValue Value { get; } = value;
private readonly TaskCompletionSource<TResult> tcs = new(TaskCreationOptions.RunContinuationsAsynchronously);
public void SetCompleted(TResult result)
{
_ = tcs.TrySetResult(result);
}
public Task<TResult> WaitAsync(CancellationToken cancellationToken = default)
{
if (cancellationToken.CanBeCanceled)
{
_ = cancellationToken.Register(() => tcs.TrySetCanceled(cancellationToken));
}
return tcs.Task;
}
}