/// <summary> /// 处理消息 /// 在socket线程处理 /// </summary> /// <param name="reader"></param> /// <param name="msgLen"></param> private void ProcessMsg(IByteArrayReader reader, int msgLen) { UInt16 msgId = 0; reader.ReadU16(ref msgId); if (msgId < 1) { mLogger.LogError("msgID = " + msgId + ", msgID < 1", "ProcessMsg"); return; } if (MsgTransferLog) { mLogger.LogInfo("rev msg, msgId=" + GetMessageTypeString(msgId), "ProcessMsg"); } IMessage msg = mMsgPool.GetMsgInst(msgId); if (msg == null) { mLogger.LogWarning("MsgPool is not find the msg, msgId = " + msgId, "ProcessMsg"); return; } if (RecodeDump) { ActorCmd dumpCmd = new ActorCmd(NetworkOutCmd.Dump) { Param0 = (uint)msgId, Param1 = msgLen, Param2 = reader.Dump(), }; SendToOutput(dumpCmd); } try { msg.MergeFrom(reader.GetStream()); } catch (Exception e) { mLogger.LogError("msgID = " + msgId + ", MergeFrom error, " + e.Message, "ProcessMsg"); return; } SendToOutput(new ActorCmd(NetworkOutCmd.Message, msg)); }