From f4efa363216e54b95b827bbfbf3225a6a38db1b9 Mon Sep 17 00:00:00 2001 From: kbengine Date: Fri, 27 Feb 2015 14:49:00 +0800 Subject: [PATCH] up --- KBEngine.cs | 12 +++++++++--- NetworkInterface.cs | 5 ++--- PacketReceiver.cs | 6 +++--- PacketSender.cs | 4 ++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/KBEngine.cs b/KBEngine.cs index 7552113..0e60c81 100644 --- a/KBEngine.cs +++ b/KBEngine.cs @@ -174,6 +174,7 @@ void installEvents() Event.registerIn("createAccount", this, "createAccount"); Event.registerIn("login", this, "login"); Event.registerIn("relogin_baseapp", this, "relogin_baseapp"); + Event.registerIn("_closeNetwork", this, "_closeNetwork"); } public KBEngineArgs getInitArgs() @@ -265,14 +266,14 @@ public static bool validEmail(string strEmail) */ public virtual void process() { + // 处理网络 + _networkInterface.process(); + // 处理外层抛入的事件 Event.processInEvents(); // 向服务端发送心跳以及同步角色信息到服务端 sendTick(); - - // 处理网络 - _networkInterface.process(); } /* @@ -287,6 +288,11 @@ public Entity player() return null; } + public void _closeNetwork(NetworkInterface networkInterface) + { + networkInterface.close(); + } + /* 向服务端发送心跳以及同步角色信息到服务端 */ diff --git a/NetworkInterface.cs b/NetworkInterface.cs index d3cbe4c..2fb5e18 100644 --- a/NetworkInterface.cs +++ b/NetworkInterface.cs @@ -188,9 +188,8 @@ public bool send(byte[] datas) public void process() { - // 避免close后一些消息没有得到处理,将这里屏蔽 - // if(!valid()) - // return; + if(!valid()) + return; if(_packetReceiver != null) _packetReceiver.process(); diff --git a/PacketReceiver.cs b/PacketReceiver.cs index 240dd80..44fbee1 100644 --- a/PacketReceiver.cs +++ b/PacketReceiver.cs @@ -119,7 +119,7 @@ public void startRecv() catch (Exception e) { Dbg.ERROR_MSG("PacketReceiver::startRecv(): call ReceiveAsync() is err: " + e.ToString()); - _networkInterface.close(); + Event.fireIn("_closeNetwork", new object[]{_networkInterface}); } } @@ -151,7 +151,7 @@ private static void _onRecv(IAsyncResult ar) if (bytesRead == 0) { Dbg.WARNING_MSG(string.Format("PacketReceiver::_processRecved(): disconnect!")); - state.networkInterface().close(); + Event.fireIn("_closeNetwork", new object[]{state.networkInterface()}); return; } else @@ -163,7 +163,7 @@ private static void _onRecv(IAsyncResult ar) catch (Exception e) { Dbg.ERROR_MSG(string.Format("PacketReceiver::_processRecved(): is error({0})!", e.ToString())); - state.networkInterface().close(); + Event.fireIn("_closeNetwork", new object[]{state.networkInterface()}); } } } diff --git a/PacketSender.cs b/PacketSender.cs index 31e8da7..422d923 100644 --- a/PacketSender.cs +++ b/PacketSender.cs @@ -118,7 +118,7 @@ void _startSend() catch (Exception e) { Dbg.ERROR_MSG("PacketSender::startSend(): is err: " + e.ToString()); - _networkInterface.close(); + Event.fireIn("_closeNetwork", new object[]{_networkInterface}); } } @@ -155,7 +155,7 @@ private static void _onSent(IAsyncResult ar) catch (Exception e) { Dbg.ERROR_MSG(string.Format("PacketSender::_processSent(): is error({0})!", e.ToString())); - state.networkInterface().close(); + Event.fireIn("_closeNetwork", new object[]{state.networkInterface()}); Interlocked.Exchange(ref state._sending, 0); } }