示例#1
0
        public static PacketHeader DeseriailizeHeader(byte[] inByte, int inOffset, int inCount)
        {
            int tempPacketSize = BitConverter.ToInt32(inByte, inOffset);

            GamePacket.Proto.PacketType tempPacketType = (GamePacket.Proto.PacketType)BitConverter.ToInt32(inByte, inOffset + sizeof(int));

            return(new PacketHeader()
            {
                packetSize = tempPacketSize, packetType = tempPacketType
            });
        }
示例#2
0
        public static byte[] Serialize <T>(GamePacket.Proto.PacketType inType, T inPacket) where T : Google.Protobuf.IMessage
        {
            try
            {
                int packetSize = inPacket.CalculateSize();

                byte[] totalBuffer = new byte[PacketHeader.headerSize + packetSize];

                Buffer.BlockCopy(BitConverter.GetBytes(packetSize), 0, totalBuffer, 0, sizeof(int));
                Buffer.BlockCopy(BitConverter.GetBytes((int)inType), 0, totalBuffer, sizeof(int), sizeof(int));
                Buffer.BlockCopy(inPacket.ToByteArray(), 0, totalBuffer, PacketHeader.headerSize, packetSize);

                return(totalBuffer);
            }
            catch
            {
                throw;
            }
        }