Avalon.Network.PacketReader.Seek C# (CSharp) Метод

Seek() публичный Метод

public Seek ( int offset, SeekOrigin origin ) : int
offset int
origin SeekOrigin
Результат int
        public int Seek(int offset, SeekOrigin origin)
        {
            switch (origin)
            {
                case SeekOrigin.Begin: m_Index = offset; break;
                case SeekOrigin.Current: m_Index += offset; break;
                case SeekOrigin.End: m_Index = m_Size - offset; break;
            }

            return m_Index;
        }

Usage Example

        /// <summary>
        /// ProcessPacket takes a given buffer and imports it to a Packet Factory for
        /// further processing.
        /// </summary>
        /// <param name="buffer"></param>
        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.WriteLine(Utility.Conversions.Misc.HexBytes(payload));
                    // find request packet
                    if (PacketHandler.OpcodeList.ContainsKey(Opcode))
                    {
                        PacketHandler.OpcodeList[Opcode](payload, sockstate);
                    }

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