public void Read(BinaryReaderBE reader) { Byte flags = reader.ReadByte(); Split = (flags & 0x10) == 0x10; Reliability = (EncapsulatedReliability)(flags >> 5); }
public void SendEncapsulated(Packet packet, EncapsulatedReliability reliability) { var dataPkt = new DataPacket(); dataPkt.Id = (byte)PacketId.EncapsulatedData; dataPkt.Sequence.Number = NextPacketId++; var encapPkt = new EncapsulatedPacket(); encapPkt.Flags.Reliability = reliability; if (encapPkt.Flags.IsReliable()) { encapPkt.MessageIndex.Number = NextReliableId++; } if (encapPkt.Flags.IsSequenced()) { encapPkt.SequenceIndex.Number = NextSequenceId++; } if (encapPkt.Flags.IsSequenced() || encapPkt.Flags.IsOrdered()) { encapPkt.OrderChannel = 0; encapPkt.OrderIndex.Number = NextOrderId++; } using (var memory = new MemoryStream()) using (var stream = new BinaryWriterBE(memory)) { packet.Write(stream); memory.SetLength(memory.Position); encapPkt.Payload = memory.ToArray(); encapPkt.Length = (UInt16)(encapPkt.Payload.Length * 8); } dataPkt.WrappedPacket = encapPkt; Socket.Send(Address, dataPkt); }