using Phantom.Agent.Services.Instances.States; using Phantom.Common.Data.Instance; namespace Phantom.Agent.Services.Instances.Procedures; sealed record SetInstanceToNotRunningStateProcedure(IInstanceStatus Status) : IInstanceProcedure { public Task<IInstanceState?> Run(IInstanceContext context, CancellationToken cancellationToken) { if (context.CurrentState is InstanceRunningState { Process.HasEnded: true }) { context.SetStatus(Status); context.ReportEvent(InstanceEvent.Stopped); return Task.FromResult<IInstanceState?>(new InstanceNotRunningState()); } else { return Task.FromResult<IInstanceState?>(null); } } }