Server.Network.Packet.InternalCompile C# (CSharp) Méthode

InternalCompile() private méthode

private InternalCompile ( bool compress ) : void
compress bool
Résultat void
        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 )
            {
                m_CompiledBuffer = Compression.Compress(
                    m_CompiledBuffer, 0, length,
                    ref length
                );

                if ( m_CompiledBuffer == null )
                {
                    Console.WriteLine( "Warning: Compression buffer overflowed on packet 0x{0:X2} ('{1}') (length={2})", m_PacketID, GetType().Name, length );
                    using ( StreamWriter op = new StreamWriter( "compression_overflow.log", true ) )
                    {
                        op.WriteLine( "{0} Warning: Compression buffer overflowed on packet 0x{1:X2} ('{2}') (length={3})", DateTime.Now, m_PacketID, GetType().Name, length );
                        op.WriteLine( new System.Diagnostics.StackTrace() );
                    }
                }
            }

            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;
        }