Esempio n. 1
0
        internal MiddlewareTransferPackage DeserializeMessage(byte[] bytes)
        {
            if ((null == bytes) || (0 == bytes.Length))
            {
                throw new Exception("Bin数据不存在或为空");
            }
            byte bytOpjTypeCodec = bytes[0];

            switch (bytOpjTypeCodec)
            {
            case (byte)SerializObjectType.MiddlewareTransferPackage:
            {
                try
                {
                    byte[] bytObjContent = new byte[bytes.Length - 1];
                    Buffer.BlockCopy(bytes, 1, bytObjContent, 0, bytObjContent.Length);

                    CCCommunicateClass.Seria_MiddlewareTransferPackage middlewareSerializeObj = null;
                    MiddlewareTransferPackage retPkg = new MiddlewareTransferPackage();
                    using (MemoryStream m = new MemoryStream(bytObjContent))
                    {
                        CJNet_SerializeTool deSerializeTool = new CJNet_SerializeTool();
                        middlewareSerializeObj = deSerializeTool.Deserialize(m, null, typeof(CCCommunicateClass.Seria_MiddlewareTransferPackage))
                                                 as CCCommunicateClass.Seria_MiddlewareTransferPackage;
                    }
                    retPkg.ParseSerializeData(middlewareSerializeObj);
                    return(retPkg);
                }
                catch (System.Exception ex)
                {
                    throw new Exception("针对Bin数据尝试反序列失败,请检验数据格式: " + ex.ToString());
                }
            }

            case (byte)SerializObjectType.RequestMTPackage:
            {
                try
                {
                    byte[] bytObjContent = new byte[bytes.Length - 1];
                    Buffer.BlockCopy(bytes, 1, bytObjContent, 0, bytObjContent.Length);

                    CCCommunicateClass.Seria_RequestMTPackage reqtMTPSerializeObj = null;
                    RequestMTPackage retPkg = new RequestMTPackage();
                    using (MemoryStream m = new MemoryStream(bytObjContent))
                    {
                        CJNet_SerializeTool deSerializeTool = new CJNet_SerializeTool();
                        reqtMTPSerializeObj = deSerializeTool.Deserialize(m, null, typeof(CCCommunicateClass.Seria_RequestMTPackage)) as CCCommunicateClass.Seria_RequestMTPackage;
                    }
                    retPkg.ParseSerializeData(reqtMTPSerializeObj);
                    return(retPkg);
                }
                catch (System.Exception ex)
                {
                    throw new Exception("针对Bin数据尝试反序列失败,请检验数据格式: " + ex.ToString());
                }
            }

            case (byte)SerializObjectType.ReplyMTPackage:
            {
                try
                {
                    byte[] bytObjContent = new byte[bytes.Length - 1];
                    Buffer.BlockCopy(bytes, 1, bytObjContent, 0, bytObjContent.Length);

                    CCCommunicateClass.Seria_ReplyMTPackage replyMTPSerializeObj = null;
                    ReplyMTPackage retPkg = new ReplyMTPackage();
                    using (MemoryStream m = new MemoryStream(bytObjContent))
                    {
                        CJNet_SerializeTool deSerializeTool = new CJNet_SerializeTool();
                        replyMTPSerializeObj = deSerializeTool.Deserialize(m, null, typeof(CCCommunicateClass.Seria_ReplyMTPackage)) as CCCommunicateClass.Seria_ReplyMTPackage;
                    }
                    retPkg.ParseSerializeData(replyMTPSerializeObj);
                    return(retPkg);
                }
                catch (System.Exception ex)
                {
                    throw new Exception("针对Bin数据尝试反序列失败,请检验数据格式: " + ex.ToString());
                }
            }

            default:
            {
                throw new NotImplementedException("二进制数据指向无法识别的类型");
            }
            }
        }