mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2024-11-25 07:42:58 +01:00
36 lines
1.4 KiB
C#
36 lines
1.4 KiB
C#
using Phantom.Common.Data.Instance;
|
|
using Phantom.Common.Data.Minecraft;
|
|
using Phantom.Common.Data.Replies;
|
|
|
|
namespace Phantom.Agent.Services.Instances.States;
|
|
|
|
sealed class InstanceNotRunningState : IInstanceState {
|
|
public void Initialize() {}
|
|
|
|
public (IInstanceState, LaunchInstanceResult) Launch(InstanceContext context) {
|
|
InstanceLaunchFailReason? failReason = context.Services.PortManager.Reserve(context.Configuration) switch {
|
|
PortManager.Result.ServerPortNotAllowed => InstanceLaunchFailReason.ServerPortNotAllowed,
|
|
PortManager.Result.ServerPortAlreadyInUse => InstanceLaunchFailReason.ServerPortAlreadyInUse,
|
|
PortManager.Result.RconPortNotAllowed => InstanceLaunchFailReason.RconPortNotAllowed,
|
|
PortManager.Result.RconPortAlreadyInUse => InstanceLaunchFailReason.RconPortAlreadyInUse,
|
|
_ => null
|
|
};
|
|
|
|
if (failReason is {} reason) {
|
|
context.SetLaunchFailedStatusAndReportEvent(reason);
|
|
return (this, LaunchInstanceResult.LaunchInitiated);
|
|
}
|
|
|
|
context.SetStatus(InstanceStatus.Launching);
|
|
return (new InstanceLaunchingState(context), LaunchInstanceResult.LaunchInitiated);
|
|
}
|
|
|
|
public (IInstanceState, StopInstanceResult) Stop(MinecraftStopStrategy stopStrategy) {
|
|
return (this, StopInstanceResult.InstanceAlreadyStopped);
|
|
}
|
|
|
|
public Task<bool> SendCommand(string command, CancellationToken cancellationToken) {
|
|
return Task.FromResult(false);
|
|
}
|
|
}
|