public CNetData Encode(CMessage msg) { ushort id = msg.GetID(); CNetData data = new CNetData(4096); SGTMsgHeader head = new SGTMsgHeader(); head.wMsgID = id; head.Encode(data); EncoderFunc pfnEncode = FindEncodeFunc(id); if (null == pfnEncode) { return(null); } if (-1 == pfnEncode(msg, ref data)) { return(null); } head.wDataLen = (ushort)(data.GetDataLen() - 8); head.wCheckSum = (ushort)((head.wDataLen ^ 0xBBCC) & 0x88AA); data.Replace(0, BitConverter.GetBytes(CNetData.Inverse(head.wCheckSum))); data.Replace(4, BitConverter.GetBytes(CNetData.Inverse(head.wDataLen))); return(data); }
public void AddEncode_Decode(ushort iMsgID, EncoderFunc encode, DecoderFunc decode) { m_Encoder[iMsgID] = encode; m_Decoder[iMsgID] = decode; }