Ejemplo n.º 1
0
        /// <summary>
        /// 主动关服
        /// </summary>
        public void Stop(int wait_time)
        {
            int leave_time = wait_time <= 0 ? GlobalID.TOTAL_WAIT_SHUTDOWN : wait_time;

            Log.Info("剩余关服时间:" + leave_time);

            //告诉客户端关服倒计时
            ws2c.ShutdownServer msg = PacketPools.Get(ws2c.msg.SHUTDOWN_SERVER) as ws2c.ShutdownServer;
            msg.leave_time = (ushort)leave_time;
            ServerNetManager.Instance.BroadcastProxyMsg(msg);

            //XX秒后自动关服,每秒触发一次
            TimerManager.Instance.AddLoop(1000, leave_time, (timer_id, param) =>
            {
                --leave_time;
                if (leave_time <= 0)
                {
                    OnStopServer();
                }
                else
                {
                    Log.Info("剩余关服时间:" + leave_time);
                }
            });
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 服务器即将关闭
 /// </summary>
 private void OnServerShutdown(PacketBase packet)
 {
     ws2c.ShutdownServer msg = packet as ws2c.ShutdownServer;
     Log.Debug("服务器即将关闭:" + msg.leave_time);
 }