BattleNet.RealmServer.getMcpPacket C# (CSharp) Method

getMcpPacket() protected method

protected getMcpPacket ( NetworkStream &mcpStream, List &mcpBuffer, List &data ) : bool
mcpStream NetworkStream
mcpBuffer List
data List
return bool
        protected bool getMcpPacket(ref NetworkStream mcpStream, ref List<byte> mcpBuffer, ref List<byte> data)
        {
            while (mcpBuffer.Count < 3)
            {
                try
                {
                    byte temp = (byte)mcpStream.ReadByte();
                    mcpBuffer.Add(temp);
                    if (ClientlessBot.debugging)
                    {
                        Console.Write("{0:X2} ", (byte)temp);
                    }
                }
                catch
                {
                    Console.WriteLine("\n{0}: [MCP] Lost Connection to MCP", m_owner.Account);
                    Kill();
                    return false;
                }
            }
            if (ClientlessBot.debugging)
                Console.WriteLine("");
            byte[] bytes = new byte[mcpBuffer.Count];
            mcpBuffer.CopyTo(bytes);

            short packetLength = BitConverter.ToInt16(bytes, 0);

            while (packetLength > mcpBuffer.Count)
            {
                try
                {
                    byte temp = (byte)mcpStream.ReadByte();
                    mcpBuffer.Add(temp);
                    if (ClientlessBot.debugging)
                    {
                        Console.Write("{0:X2} ", (byte)temp);
                    }
                }
                catch
                {
                    Console.WriteLine("\n{0}: [MCP] Lost Connection to MCP", m_owner.Account);
                    Kill();
                    return false;
                }
            }
            if (ClientlessBot.debugging)
                Console.WriteLine("");

            data = new List<byte>(mcpBuffer.GetRange(0, packetLength));
            mcpBuffer.RemoveRange(0, packetLength);
            return true;
        }