sharp-chat/SharpChat/Commands/ShutdownRestartCommand.cs

41 lines
1.1 KiB
C#
Raw Normal View History

using SharpChat.Packet;
using System;
using System.Threading;
namespace SharpChat.Commands {
public class ShutdownRestartCommand : IUserCommand {
private readonly ManualResetEvent WaitHandle;
2024-05-20 16:16:32 +00:00
private readonly Func<bool> ShuttingDown;
private readonly Action<bool> SetShutdown;
2024-05-20 16:16:32 +00:00
public ShutdownRestartCommand(
ManualResetEvent waitHandle,
Func<bool> shuttingDown,
Action<bool> setShutdown
) {
WaitHandle = waitHandle;
2024-05-20 16:16:32 +00:00
ShuttingDown = shuttingDown;
SetShutdown = setShutdown;
}
public bool IsMatch(UserCommandContext ctx) {
return ctx.NameEquals("shutdown")
|| ctx.NameEquals("restart");
}
public void Dispatch(UserCommandContext ctx) {
if(ctx.User.UserId != 1) {
ctx.Chat.SendTo(ctx.User, new CommandNotAllowedErrorPacket(ctx.Name));
return;
}
2024-05-20 16:16:32 +00:00
if(ShuttingDown())
return;
2024-05-20 16:16:32 +00:00
SetShutdown(ctx.NameEquals("restart"));
ctx.Chat.Update();
WaitHandle?.Set();
}
}
}