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."); } }
/// <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: 实现用来验证目标的代码"); }
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("验证此测试方法的正确性。"); }
/// <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: 实现用来验证目标的代码" ); }