using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonNetwork_ICE.Common; using CommonLang.Protocol; using CommonNetwork_ICE.Util; using CommonNetwork_ICE.Session; using Slice; using CommonLang.Log; using CommonNetwork_ICE.Client; namespace CommonNetwork_ICE.Msg { /// /// ICE消息委托处理类:根据客户端消息接收类的委托,处理服务器发来的ICE网络消息 /// internal class ClientMsgHandlerTcpDelegate : ClientMsgHandler { private static Logger log = LoggerFactory.GetLogger("ClientMsgHandlerTcpDelegate"); public ClientMsgHandlerTcpDelegate(IceClientConnector iceClient, IceClientNetSession session) : base(iceClient, session) { } /// /// 收到数据包 /// /// 数据包 /// 发送方IP /// 发送方端口 public override void RecvData(int recvPort, TransMessage message, String ip, int port) { log.Trace("收到服务器发来数据,地址IP【" + ip + "】,端口【" + port + "】,编号:" + message.serial); // 数据解码 IMessage imessage = null; try { Codec.doDecode(message, out imessage); } catch (Exception e) { Env.ENV_ERR_CODE = Error.ERR_CODE_4; session.onException(e); return; } if (imessage == null) { return; } // 数据处理 try { long startTickCount = Environment.TickCount; session.onReceive(imessage, message.length); long endTickCount = Environment.TickCount; long interval = endTickCount - startTickCount; if (interval > Env.MSG_PROC_TIME_OUT) { log.Info("客户端消息处理超时,用时【" + interval + "】,消息编号【" + imessage.GetType() + "】,接收端口【" + recvPort + "】"); } } catch (Exception e) { log.Error(e.Message); Env.ENV_ERR_CODE = Error.ERR_CODE_5; session.onException(e); } } } }