Add infrastructure to support multiple execution environments

This commit is contained in:
Stone_Red
2025-12-26 13:31:14 +01:00
parent 8211825bef
commit 252aca98b4
7 changed files with 296 additions and 158 deletions
@@ -0,0 +1,24 @@
using RemoteExec.Server.Utilities;
using RemoteExec.Shared;
namespace RemoteExec.Server.Services;
public abstract class ExecutionEnvironment
{
public event EventHandler<CompletableEventArgs<string, byte[]>>? RequestAssembly;
public abstract string Name { get; }
public abstract Task PrepareEnvironmentAsync(CancellationToken cancellationToken);
public abstract Task<RemoteExecutionResult> ExecuteTaskAsync(RemoteExecutionRequest request);
public abstract Task CleanupEnvironmentAsync(CancellationToken cancellationToken);
protected async Task<byte[]> RequestAssemblyAsync(string assemblyName)
{
CompletableEventArgs<string, byte[]> args = new CompletableEventArgs<string, byte[]>(assemblyName);
RequestAssembly?.Invoke(this, args);
return await args.WaitAsync();
}
}