ReleaseInstance() public static méthode

public static ReleaseInstance ( PacketWriter pw ) : void
pw PacketWriter
Résultat void
Exemple #1
0
        private void InternalCompile(bool compress)
        {
            if (m_Length == 0)
            {
                long streamLen = m_Stream.Length;

                m_Stream.Seek(1, SeekOrigin.Begin);
                m_Stream.Write((ushort)streamLen);
            }
            else if (m_Stream.Length != m_Length)
            {
                int diff = (int)m_Stream.Length - m_Length;

                Console.WriteLine("Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)", m_PacketID, diff >= 0 ? "+" : "", diff);
            }

            MemoryStream ms = m_Stream.UnderlyingStream;

            m_CompiledBuffer = ms.GetBuffer();
            int length = (int)ms.Length;

            if (compress)
            {
                try
                {
                    Compression.Compress(m_CompiledBuffer, length, out m_CompiledBuffer, out length);
                }
                catch (IndexOutOfRangeException)
                {
                    Console.WriteLine("Warning: Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})", m_PacketID, GetType().Name, length);

                    m_CompiledBuffer = null;
                }
            }

            if (m_CompiledBuffer != null)
            {
                m_CompiledLength = length;

                byte[] old = m_CompiledBuffer;

                if (length > BufferSize || (m_State & State.Static) != 0)
                {
                    m_CompiledBuffer = new byte[length];
                }
                else
                {
                    m_CompiledBuffer = m_Buffers.AcquireBuffer();
                    m_State         |= State.Buffered;
                }

                Buffer.BlockCopy(old, 0, m_CompiledBuffer, 0, length);
            }

            PacketWriter.ReleaseInstance(m_Stream);
            m_Stream = null;
        }
Exemple #2
0
        protected void Clear()
        {
            m_CompiledBuffer = null;

            if (m_Stream != null)
            {
                PacketWriter.ReleaseInstance(m_Stream);
                m_Stream = null;
            }
        }
Exemple #3
0
        private void InternalCompile(bool compress)
        {
            if (m_Length == 0)
            {
                long streamLen = m_Stream.Length;

                m_Stream.Seek(1, SeekOrigin.Begin);
                m_Stream.Write((ushort)streamLen);
            }
            else if (m_Stream.Length != m_Length)
            {
                int diff = (int)m_Stream.Length - m_Length;

                log.ErrorFormat("Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)",
                                m_PacketID, diff >= 0 ? "+" : "", diff);
            }

            MemoryStream ms = m_Stream.UnderlyingStream;

            int length;

            m_CompiledBuffer = ms.GetBuffer();
            length           = (int)ms.Length;

            if (compress)
            {
                try
                {
                    Compression.Compress(m_CompiledBuffer, length, out m_CompiledBuffer, out length);
                }
                catch (IndexOutOfRangeException)
                {
                    log.WarnFormat("Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})",
                                   m_PacketID, GetType().Name, length);

                    m_CompiledBuffer = null;
                }
            }

            if (m_CompiledBuffer != null)
            {
                byte[] old = m_CompiledBuffer;

                m_CompiledBuffer = new byte[length];

                Buffer.BlockCopy(old, 0, m_CompiledBuffer, 0, length);
            }

            PacketWriter.ReleaseInstance(m_Stream);
            m_Stream = null;
        }
        private void InternalCompile(bool compress)
        {
            long num1;
            int  num2;

            byte[] buffer1;
            if (this.m_Length == 0)
            {
                num1 = this.m_Stream.Length;
                this.m_Stream.Seek(1, SeekOrigin.Begin);
                this.m_Stream.Write(((ushort)num1));
            }
            else if (this.m_Stream.Length != this.m_Length)
            {
                num2 = (((int)this.m_Stream.Length) - this.m_Length);
                Console.WriteLine("Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)", this.m_PacketID, ((num2 >= 0) ? "+" : ""), num2);
            }
            MemoryStream stream1 = this.m_Stream.UnderlyingStream;

            this.m_CompiledBuffer = stream1.GetBuffer();
            int num3 = ((int)stream1.Length);

            if (compress)
            {
                try
                {
                    Compression.Compress(this.m_CompiledBuffer, num3, out this.m_CompiledBuffer, out num3);
                }
                catch (IndexOutOfRangeException)
                {
                    Console.WriteLine("Warning: Compression buffer overflowed on packet 0x{0:X2} (\'{1}\') (length={2})", this.m_PacketID, base.GetType().Name, num3);
                    this.m_CompiledBuffer = null;
                }
            }
            if (this.m_CompiledBuffer != null)
            {
                buffer1 = this.m_CompiledBuffer;
                this.m_CompiledBuffer = new byte[num3];
                Buffer.BlockCopy(buffer1, 0, this.m_CompiledBuffer, 0, num3);
            }
            PacketWriter.ReleaseInstance(this.m_Stream);
            this.m_Stream = null;
        }
Exemple #5
0
        private void InternalCompile(bool compress)
        {
            if (m_Length == 0)
            {
                var streamLen = Stream.Length;

                Stream.Seek(1, SeekOrigin.Begin);
                Stream.Write((ushort)streamLen);
            }
            else if (Stream.Length != m_Length)
            {
                var diff = (int)Stream.Length - m_Length;

                Console.WriteLine(
                    "Packet: 0x{0:X2}: Bad packet length! ({1}{2} bytes)",
                    PacketID,
                    diff >= 0 ? "+" : "",
                    diff
                    );
            }

            var ms = Stream.UnderlyingStream;

            m_CompiledBuffer = ms.GetBuffer();
            var length = (int)ms.Length;

            if (compress)
            {
                var buffer = ArrayPool <byte> .Shared.Rent(CompressorBufferSize);

                NetworkCompression.Compress(m_CompiledBuffer, 0, length, buffer, out length);

                if (length <= 0)
                {
                    Console.WriteLine(
                        "Warning: Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})",
                        PacketID,
                        GetType().Name,
                        length
                        );
                    using var op = new StreamWriter("compression_overflow.log", true);
                    op.WriteLine(
                        "{0} Warning: Compression buffer overflowed on packet 0x{1:X2} ('{2}') (length={3})",
                        DateTime.UtcNow,
                        PacketID,
                        GetType().Name,
                        length
                        );
                    op.WriteLine(new StackTrace());
                }
                else
                {
                    m_CompiledLength = length;

                    if ((m_State & State.Static) != 0)
                    {
                        m_CompiledBuffer = new byte[length];
                        Buffer.BlockCopy(buffer, 0, m_CompiledBuffer, 0, length);
                        ArrayPool <byte> .Shared.Return(buffer);
                    }
                    else
                    {
                        m_CompiledBuffer = buffer;
                        m_State         |= State.Buffered;
                    }
                }
            }
            else if (length > 0)
            {
                var old = m_CompiledBuffer;
                m_CompiledLength = length;

                if ((m_State & State.Static) != 0)
                {
                    m_CompiledBuffer = new byte[length];
                }
                else
                {
                    m_CompiledBuffer = ArrayPool <byte> .Shared.Rent(length);

                    m_State |= State.Buffered;
                }

                Buffer.BlockCopy(old, 0, m_CompiledBuffer, 0, length);
            }

            PacketWriter.ReleaseInstance(Stream);
            Stream = null;
        }