Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }