Beispiel #1
0
    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);
    }
Beispiel #2
0
 public void AddEncode_Decode(ushort iMsgID, EncoderFunc encode, DecoderFunc decode)
 {
     m_Encoder[iMsgID] = encode;
     m_Decoder[iMsgID] = decode;
 }