Пример #1
0
        public void Read(BinaryReaderBE Reader)
        {
            Byte b1 = Reader.ReadByte();
            Byte b2 = Reader.ReadByte();
            Byte b3 = Reader.ReadByte();

            Number = (UInt32)b1 | ((UInt32)b2 << 8) | ((UInt32)b3 << 16);
        }
Пример #2
0
        public void Read(BinaryReaderBE Reader)
        {
            Flags.Read(Reader);
            Length = Reader.ReadUInt16BE();

            if (Flags.IsReliable())
            {
                MessageIndex.Read(Reader);
            }

            if (Flags.IsSequenced())
            {
                SequenceIndex.Read(Reader);
            }

            if (Flags.IsSequenced() || Flags.IsOrdered())
            {
                OrderIndex.Read(Reader);
                OrderChannel = Reader.ReadByte();
            }

            if (Flags.Split)
            {
                SplitCount = Reader.ReadUInt32BE();
                SplitId    = Reader.ReadUInt16BE();
                SplitIndex = Reader.ReadUInt32BE();
            }

            Payload = Reader.ReadBytes(Length);
        }
Пример #3
0
        public void Read(BinaryReaderBE reader)
        {
            Byte flags = reader.ReadByte();

            Split       = (flags & 0x10) == 0x10;
            Reliability = (EncapsulatedReliability)(flags >> 5);
        }
Пример #4
0
 private void HandleEncapsulatedPayload(byte[] payload)
 {
     using (var encapMemory = new MemoryStream(payload))
         using (var encapStream = new BinaryReaderBE(encapMemory))
         {
             var encapId = encapStream.ReadByte();
             HandlePacketDecapsulated(encapId, encapStream);
         }
 }
Пример #5
0
 private void OnPacketReceived(IPEndPoint address, byte[] packet)
 {
     using (var stream = new MemoryStream(packet))
         using (var reader = new BinaryReaderBE(stream))
         {
             byte id = reader.ReadByte();
             if (id < 0x80)
             {
                 var decoded = DecodePacket(id, reader);
                 HandlePacket(address, decoded);
             }
             else
             {
                 if (Session != null)
                 {
                     Session.HandlePacket(id, reader);
                 }
                 else
                 {
                     throw new Exception("Unhandled session packet - no session established!");
                 }
             }
         }
 }