예제 #1
0
파일: MsgBase.cs 프로젝트: yymqwl/KcpServer
        public byte[] SerializePackMsg <T>(T msgbody)
        {
            if (msgbody == null)
            {
                AppModules.Instance.LogManager.Log.Error("Null: msgbody");
                return(null);
            }
            ResetStrem();
            MsgBody = msgbody;

            BinaryWriter br = new BinaryWriter(m_ms);

            if (!MsgHead.SerializeByStream(m_ms))
            {
                AppModules.Instance.LogManager.Log.Error("MsgBase: Serialize");
                return(null);
            }

            ProtoBufUtils.ProtobufSerializeByStream(msgbody, m_ms);
            MsgHead.m_lengh = (uint)m_ms.Length - (uint)MsgHead.Length; //
            MsgHead.SerializeByStreamPos(m_ms, 0);
            //MsgHead.SerializeByStreamPos(m_ms, sizeof(int));//4个字节的长度

            m_ms.Position = 0;


            return(m_ms.ToArray());
        }
예제 #2
0
파일: MsgBase.cs 프로젝트: yymqwl/KcpServer
        public byte[] Serialize <T>(T msgbody)
        {
            if (msgbody == null)
            {
                AppModules.Instance.LogManager.Log.Error("Null: msgbody");
                return(null);
            }
            ResetStrem();
            MsgBody = msgbody;

            if (!MsgHead.SerializeByStream(m_ms))
            {
                AppModules.Instance.LogManager.Log.Error("MsgBase: Serialize");
                return(null);
            }

            ProtoBufUtils.ProtobufSerializeByStream(msgbody, m_ms);
            MsgHead.m_lengh = (uint)m_ms.Length - (uint)MsgHead.Length;
            MsgHead.SerializeByStreamPos(m_ms, 0);
            return(m_ms.ToArray());
        }