public override Task <BooleanMessageReply> BeginShutdown(BeginShutdownRequest request, ServerCallContext context) { var resp = new BooleanMessageReply { Message = "An unknown error occurred", Success = false }; try { if (!World.ControlMessageQueue.IsAddingCompleted) { World.ControlMessageQueue.Add(new HybrasylControlMessage(ControlOpcodes.ShutdownServer, context.Peer, request.Delay)); resp.Message = "Shutdown request successfully submitted"; resp.Success = true; } else { resp.Message = "Control message queue closed (shutdown already in progress?)"; } } catch (Exception e) { Game.ReportException(e); GameLog.Error("GRPC: Shutdown request failed, {e}", e); } return(Task.FromResult(resp)); }
public override Task <BooleanMessageReply> IsShutdownComplete(Empty empty, ServerCallContext context) { var resp = new BooleanMessageReply(); resp.Message = "Hybrasyl active, no shutdown in progress"; resp.Success = false; if (Game.ShutdownComplete) { resp.Message = "Shutdown complete"; resp.Success = true; } else if (Game.ShutdownTimeRemaining > 0) { resp.Message = $"Shutdown will complete in {Game.ShutdownTimeRemaining} seconds"; } else if (!Game.IsActive()) { resp.Message = "Shutdown is in progress"; } return(Task.FromResult(resp)); }