Ejemplo n.º 1
0
        private void OnNetStateDisconnect(object sender, NetStateDisconnectEventArgs e)
        {
            var netState = e.NetState;

            if (netState.IsVerifyLogin && netState.BizId > 0)
            {
                //  标示玩家已经登陆过游戏,离线时会触发一系列的操作
                var player = (Player)netState.Player;
                Logs.Info("{0} net disconnect.", player.Name);

                player.LastLogoffTime = OneServer.NowTime;
                var onlineTime = player.LastLogoffTime - player.LastLoginTime;
                player.OnlineTime += (int)onlineTime.TotalSeconds;

                WorldEntityManager.OnlinePlayers.Remove(player.Id);

                PlayerEvents.OnExitGame(player);

                //  这里暂时是同步写文件了
                DB.GameDB.UpdateEntity(player);
            }
            else
            {
                Logs.Info("not login account net disconnect.");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 调用ClientSocketHandler.CloseSocket(...)的时候会产生此调用
        /// </summary>
        internal void OnDisconnect()
        {
            // 默认是有效地,只检测有没有已经断开,如果已经断开,则不继续处理
            if (m_Running.SetInvalid() == false)
            {
                return;
            }

            m_Socket.Free();

            // 如果还存在需要发送的数据,则直接清空
            if (m_SendQueue.IsEmpty == false)
            {
                m_SendQueue.Clear(); // 内部已经有锁定
            }
            // 断开的通知事件
            EventHandler <NetStateDisconnectEventArgs> tempEvent = m_EventDisconnect;

            if (tempEvent != null)
            {
                NetStateDisconnectEventArgs netStateDisconnectEventArgs = new NetStateDisconnectEventArgs(this);
                tempEvent(this, netStateDisconnectEventArgs);
            }

            // 放入无效客户端的集合内,等待处理
            m_World.DisposedNetStates(this);

            Logs.WriteLine(LogMessageType.MSG_INFO, LanguageString.SingletonInstance.NetStateString002, this);
        }
        public void NetStateDisconnectEventArgsConstructorTest()
        {
            NetState netStateDisconnect        = null; // TODO: 初始化为适当的值
            NetStateDisconnectEventArgs target = new NetStateDisconnectEventArgs(netStateDisconnect);

            Assert.Inconclusive("TODO: 实现用来验证目标的代码");
        }
Ejemplo n.º 4
0
 static void world_NetStateDisconnect(object sender, NetStateDisconnectEventArgs e)
 {
     //  网络连接断开
     if (e.NetState != null)
     {
         Logs.Info("{0} close socket.", e.NetState.Serial);
     }
 }
 public void NetStateDisconnectTest()
 {
     NetState netStateDisconnect = null; // TODO: 初始化为适当的值
     NetStateDisconnectEventArgs target = new NetStateDisconnectEventArgs( netStateDisconnect ); // TODO: 初始化为适当的值
     NetState actual;
     actual = target.NetStateDisconnect;
     Assert.Inconclusive( "验证此测试方法的正确性。" );
 }
        public void NetStateDisconnectTest()
        {
            NetState netStateDisconnect        = null;                                                // TODO: 初始化为适当的值
            NetStateDisconnectEventArgs target = new NetStateDisconnectEventArgs(netStateDisconnect); // TODO: 初始化为适当的值
            NetState actual;

            actual = target.NetStateDisconnect;
            Assert.Inconclusive("验证此测试方法的正确性。");
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 调用ClientSocketHandler.CloseSocket(...)的时候会产生此调用
        /// </summary>
        internal void OnDisconnect()
        {
            LOGs.WriteLine( LogMessageType.MSG_HACK, "OnDisconnect...... 0" );

            // 默认是有效地,只检测有没有已经断开,如果已经断开,则不继续处理
            if ( m_Running.SetInvalid() == false )
                return;

            LOGs.WriteLine( LogMessageType.MSG_HACK, "OnDisconnect...... 1" );

            m_Socket.Free();

            // 如果还存在需要发送的数据,则直接清空
            if ( m_SendQueue.IsEmpty == false )
                m_SendQueue.Clear(); // 内部已经有锁定

            // 断开的通知事件
            EventHandler<NetStateDisconnectEventArgs> tempEvent = m_EventDisconnect;
            if ( tempEvent != null )
            {
                NetStateDisconnectEventArgs netStateDisconnectEventArgs = new NetStateDisconnectEventArgs( this );
                tempEvent( this, netStateDisconnectEventArgs );
            }

            // 放入无效客户端的集合内,等待处理
            m_World.DisposedNetStates( this );

            LOGs.WriteLine( LogMessageType.MSG_INFO, LanguageString.SingletonInstance.NetStateString002, this );
        }
 public void NetStateDisconnectEventArgsConstructorTest()
 {
     NetState netStateDisconnect = null; // TODO: 初始化为适当的值
     NetStateDisconnectEventArgs target = new NetStateDisconnectEventArgs( netStateDisconnect );
     Assert.Inconclusive( "TODO: 实现用来验证目标的代码" );
 }