public void Write(BinaryWriterBE writer) { Byte flags = (Byte)(((Byte)Reliability << 5) | (Split ? 0x10 : 0x00)); writer.Write(flags); }
public void Write(BinaryWriterBE Writer) { Flags.Write(Writer); Writer.WriteBE(Length); if (Flags.IsReliable()) { MessageIndex.Write(Writer); } if (Flags.IsSequenced()) { SequenceIndex.Write(Writer); } if (Flags.IsSequenced() || Flags.IsOrdered()) { OrderIndex.Write(Writer); Writer.Write(OrderChannel); } if (Flags.Split) { Writer.WriteBE(SplitCount); Writer.WriteBE(SplitId); Writer.WriteBE(SplitIndex); } Writer.Write(Payload); }
public void Write(BinaryWriterBE Writer) { Byte b1 = (Byte)(Number & 0xff); Byte b2 = (Byte)((Number >> 8) & 0xff); Byte b3 = (Byte)((Number >> 16) & 0xff); Writer.Write(b1); Writer.Write(b2); Writer.Write(b3); }
public void Send(IPEndPoint address, Packet packet) { using (var stream = new MemoryStream()) using (var writer = new BinaryWriterBE(stream)) { packet.Write(writer); stream.SetLength(stream.Position); Socket.Send(address, stream.ToArray()); } }
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); }