Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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));
            }
        }