Avalon.Network.SocketServer.ProcessPacket C# (CSharp) Method

ProcessPacket() public method

ProcessPacket takes a given buffer and imports it to a Packet Factory for further processing.
public ProcessPacket ( byte buffer, SocketClient sockstate ) : void
buffer byte
sockstate SocketClient
return void
        public void ProcessPacket(byte[] buffer, SocketClient sockstate)
        {
            int offset = 0;
            pReader = new PacketReader(buffer, buffer.Length, true);

            // traverse packet buffer for cached packets
            while ((m_bPacketStream.Length - offset) >= m_HeaderSize)
            {
                // packet information
                pReader.Seek(offset, System.IO.SeekOrigin.Begin);
                UInt16 Size = pReader.ReadUInt16();
                UInt16 Flag = pReader.ReadUInt16();
                UInt16 Opcode = pReader.ReadUInt16();

                if ((Flag == (UInt16)PacketFlag.Master) && (Size < m_MaxPacketSize))
                {
                    byte[] payload = new byte[Size];
                    Buffer.BlockCopy(m_bPacketStream, offset, payload, 0, Size);

                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("[Client->Server]");
                    Console.ForegroundColor = ConsoleColor.Gray;
                    Console.WriteLine(Utility.Conversions.Misc.HexBytes(payload));
                    // find request packet
                    if (PacketHandler.OpcodeList.ContainsKey(Opcode))
                    {
                        PacketHandler.OpcodeList[Opcode](payload, sockstate);
                    }

                    offset += Size;
                }
                else
                {
                    break;
                }
            }
        }