public void AddOutgoingPacket(byte[] packet, PacketType packetType, PacketFlags addFlags = PacketFlags.None) { lock (sendLoopLock) { if (Closed) { return; } if (NeedsSplitting(packet.Length) && packetType != PacketType.VoiceWhisper) { // VoiceWhisper packets are for some reason excluded if (packetType == PacketType.Voice) { return; // Exception maybe ??? This happens when a voice packet is bigger then the allowed size } var tmpCompress = QuickerLz.Compress(packet, 1); if (tmpCompress.Length < packet.Length) { packet = tmpCompress.ToArr(); addFlags |= PacketFlags.Compressed; } if (NeedsSplitting(packet.Length)) { foreach (var splitPacket in BuildSplitList(packet, packetType)) { AddOutgoingPacket(splitPacket, addFlags); } return; } } AddOutgoingPacket(new OutgoingPacket(packet, packetType), addFlags); } }
public void AddOutgoingPacket(ReadOnlySpan <byte> packet, PacketType packetType, PacketFlags addFlags = PacketFlags.None) { lock (sendLoopLock) { if (Closed) { return; } if (NeedsSplitting(packet.Length) && packetType != PacketType.VoiceWhisper) { // VoiceWhisper packets are for some reason excluded if (packetType == PacketType.Voice) { return; // Exception maybe ??? This happens when a voice packet is bigger than the allowed size } var tmpCompress = QuickerLz.Compress(packet, 1); if (tmpCompress.Length < packet.Length) { packet = tmpCompress; addFlags |= PacketFlags.Compressed; } if (NeedsSplitting(packet.Length)) { AddOutgoingSplitData(packet, packetType, addFlags); return; } } SendOutgoingData(packet, packetType, addFlags); } }
public E <string> AddOutgoingPacket(ReadOnlySpan <byte> packet, PacketType packetType, PacketFlags addFlags = PacketFlags.None) { lock (sendLoopLock) { if (closed != 0) { return("Connection closed"); } if (NeedsSplitting(packet.Length) && packetType != PacketType.VoiceWhisper) { // VoiceWhisper packets are excluded for some reason if (packetType == PacketType.Voice) { return("Voice packet too big"); // This happens when a voice packet is bigger than the allowed size } var tmpCompress = QuickerLz.Compress(packet, 1); if (tmpCompress.Length < packet.Length) { packet = tmpCompress; addFlags |= PacketFlags.Compressed; } if (NeedsSplitting(packet.Length)) { return(AddOutgoingSplitData(packet, packetType, addFlags)); } } return(SendOutgoingData(packet, packetType, addFlags)); } }