/// <summary> /// Creates Reliable Udp header from connectionRecord /// </summary> /// <param name="connectionRecord">Current <see cref="ReliableUdpConnectionRecord"/> (ConnectionRecord)</param> /// <returns></returns> internal static ReliableUdpHeader CreateReliableUdpHeader(ReliableUdpConnectionRecord connectionRecord) { ReliableUdpHeader header = new ReliableUdpHeader(); //RU: запись номера передачи header.TransmissionId = connectionRecord.TransmissionId; //RU: тип сообщения header.ReliableUdpMessageType = connectionRecord.ReliableUdpMessageType; //RU: установка номера пакета для передачи header.PacketNumber = connectionRecord.SndNext; //RU: запись управляющих флагов ReliableUdpHeaderFlags flags = ReliableUdpHeaderFlags.None; //RU: выставляем комбинацию двух флагов для единственного сообщения //EN: set flags for single packet message if (connectionRecord.NumberOfPackets == 1) { flags = ReliableUdpHeaderFlags.FirstPacket | ReliableUdpHeaderFlags.LastPacket; } //RU: дополнительный флаг если нам не требуется подтверждение //EN: set additional flag if we don't need to use acknowledge mechanism if (connectionRecord.IsNoAnswerNeeded) { flags = flags | ReliableUdpHeaderFlags.NoAsk; } //RU: это первый пакет //EN: check for first packet if (connectionRecord.NumberOfPackets > 1 && connectionRecord.SndNext == 0) { flags = flags | ReliableUdpHeaderFlags.FirstPacket; } //RU: это последний пакет //EN: check for last packet if (connectionRecord.NumberOfPackets > 1 && (connectionRecord.NumberOfPackets - connectionRecord.SndNext - 1 == 0)) { flags = flags | ReliableUdpHeaderFlags.LastPacket; } //RU: записываем флаги header.Flags = flags; //RU: запись поля Options - размер всего сообщения //EN: if we've got first message we should write total size of message //EN: in header.Options if (header.Flags.HasFlag(ReliableUdpHeaderFlags.FirstPacket)) { header.Options = connectionRecord.OutcomingStream.Length; } return(header); }
internal static ReliableUdpHeader CreateReliableUdpHeader(Int32 transmissionId, ReliableUdpHeaderFlags flags, ReliableUdpMessageTypes reliableUdpMessageType, Int32 sequenceNumber, Int32 options) { ReliableUdpHeader header = new ReliableUdpHeader { TransmissionId = transmissionId, Flags = flags, ReliableUdpMessageType = reliableUdpMessageType, PacketNumber = sequenceNumber, Options = options, }; return(header); }
internal static ReliableUdpHeader CreateReliableUdpHeader(Int32 transmissionId, ReliableUdpHeaderFlags flags, ReliableUdpMessageTypes reliableUdpMessageType, Int32 sequenceNumber, Int32 options) { ReliableUdpHeader header = new ReliableUdpHeader { TransmissionId = transmissionId, Flags = flags, ReliableUdpMessageType = reliableUdpMessageType, PacketNumber = sequenceNumber, Options = options, }; return header; }