Exemplo n.º 1
0
 internal static extern ZLibNative.ErrorCode DeflateInit2_(
     ref ZLibNative.ZStream stream,
     ZLibNative.CompressionLevel level,
     ZLibNative.CompressionMethod method,
     int windowBits,
     int memLevel,
     ZLibNative.CompressionStrategy strategy);
Exemplo n.º 2
0
        private void DeflateInit(ZLibNative.CompressionLevel compressionLevel, int windowBits, int memLevel,
                                 ZLibNative.CompressionStrategy strategy)
        {
            ZErrorCode errC;

            try
            {
                errC = ZLibNative.CreateZLibStreamForDeflate(out _zlibStream, compressionLevel,
                                                             windowBits, memLevel, strategy);
            }
            catch (Exception cause)
            {
                throw new ZLibException(SR.ZLibErrorDLLLoadError, cause);
            }

            switch (errC)
            {
            case ZErrorCode.Ok:
                return;

            case ZErrorCode.MemError:
                throw new ZLibException(SR.ZLibErrorNotEnoughMemory, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            case ZErrorCode.VersionError:
                throw new ZLibException(SR.ZLibErrorVersionMismatch, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            case ZErrorCode.StreamError:
                throw new ZLibException(SR.ZLibErrorIncorrectInitParameters, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            default:
                throw new ZLibException(SR.ZLibErrorUnexpected, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());
            }
        }
Exemplo n.º 3
0
        internal Deflater(CompressionLevel compressionLevel, int windowBits)
        {
            Debug.Assert(windowBits >= minWindowBits && windowBits <= maxWindowBits);
            ZLibNative.CompressionLevel zlibCompressionLevel;
            int memLevel;

            switch (compressionLevel)
            {
            // See the note in ZLibNative.CompressionLevel for the recommended combinations.

            case CompressionLevel.Optimal:
                zlibCompressionLevel = ZLibNative.CompressionLevel.DefaultCompression;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.Fastest:
                zlibCompressionLevel = ZLibNative.CompressionLevel.BestSpeed;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.NoCompression:
                zlibCompressionLevel = ZLibNative.CompressionLevel.NoCompression;
                memLevel             = ZLibNative.Deflate_NoCompressionMemLevel;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(compressionLevel));
            }

            ZLibNative.CompressionStrategy strategy = ZLibNative.CompressionStrategy.DefaultStrategy;

            DeflateInit(zlibCompressionLevel, windowBits, memLevel, strategy);
        }
Exemplo n.º 4
0
 internal static unsafe partial ZLibNative.ErrorCode DeflateInit2_(
     ZLibNative.ZStream *stream,
     ZLibNative.CompressionLevel level,
     ZLibNative.CompressionMethod method,
     int windowBits,
     int memLevel,
     ZLibNative.CompressionStrategy strategy);
Exemplo n.º 5
0
        internal DeflaterZLib(CompressionLevel compressionLevel)
        {
            ZLibNative.CompressionLevel zlibCompressionLevel;
            int memLevel;

            switch (compressionLevel)
            {
            // See the note in ZLibNative.CompressionLevel for the recommended combinations.

            case CompressionLevel.Optimal:
                zlibCompressionLevel = ZLibNative.CompressionLevel.BestCompression;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.Fastest:
                zlibCompressionLevel = ZLibNative.CompressionLevel.BestSpeed;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.NoCompression:
                zlibCompressionLevel = ZLibNative.CompressionLevel.NoCompression;
                memLevel             = ZLibNative.Deflate_NoCompressionMemLevel;
                break;

            default:
                throw new ArgumentOutOfRangeException("compressionLevel");
            }

            int windowBits = ZLibNative.Deflate_DefaultWindowBits;

            ZLibNative.CompressionStrategy strategy = ZLibNative.CompressionStrategy.DefaultStrategy;

            DeflateInit(zlibCompressionLevel, windowBits, memLevel, strategy);
        }
Exemplo n.º 6
0
        internal static unsafe ZLibNative.ErrorCode DeflateInit2_(
            ref ZLibNative.ZStream stream,
            ZLibNative.CompressionLevel level,
            ZLibNative.CompressionMethod method,
            int windowBits,
            int memLevel,
            ZLibNative.CompressionStrategy strategy)
        {
            fixed(byte *versionString = &ZLibVersion[0])
            fixed(ZLibNative.ZStream * streamBytes = &stream)
            {
                byte *pBytes = (byte *)streamBytes;

                return((ZLibNative.ErrorCode)deflateInit2_(pBytes, (int)level, (int)method, (int)windowBits, (int)memLevel, (int)strategy, versionString, sizeof(ZLibNative.ZStream)));
            }
        }
Exemplo n.º 7
0
        internal Deflater(CompressionLevel compressionLevel, int windowBits)
        {
            Debug.Assert(windowBits >= minWindowBits && windowBits <= maxWindowBits);
            ZLibNative.CompressionLevel zlibCompressionLevel;
            int memLevel;

            switch (compressionLevel)
            {
            // See the note in ZLibNative.CompressionLevel for the recommended combinations.

            case CompressionLevel.Optimal:
                zlibCompressionLevel = ZLibNative.CompressionLevel.DefaultCompression;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.Fastest:
                zlibCompressionLevel = ZLibNative.CompressionLevel.BestSpeed;
                memLevel             = ZLibNative.Deflate_DefaultMemLevel;
                break;

            case CompressionLevel.NoCompression:
                zlibCompressionLevel = ZLibNative.CompressionLevel.NoCompression;
                memLevel             = ZLibNative.Deflate_NoCompressionMemLevel;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(compressionLevel));
            }

            ZLibNative.CompressionStrategy strategy = ZLibNative.CompressionStrategy.DefaultStrategy;

            ZErrorCode errC;

            try
            {
                errC = ZLibNative.CreateZLibStreamForDeflate(out _zlibStream, zlibCompressionLevel,
                                                             windowBits, memLevel, strategy);
            }
            catch (Exception cause)
            {
                throw new ZLibException(SR.ZLibErrorDLLLoadError, cause);
            }

            switch (errC)
            {
            case ZErrorCode.Ok:
                return;

            case ZErrorCode.MemError:
                throw new ZLibException(SR.ZLibErrorNotEnoughMemory, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            case ZErrorCode.VersionError:
                throw new ZLibException(SR.ZLibErrorVersionMismatch, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            case ZErrorCode.StreamError:
                throw new ZLibException(SR.ZLibErrorIncorrectInitParameters, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());

            default:
                throw new ZLibException(SR.ZLibErrorUnexpected, "deflateInit2_", (int)errC, _zlibStream.GetErrorMessage());
            }
        }
Exemplo n.º 8
0
        private void DeflateInit(ZLibNative.CompressionLevel compressionLevel, Int32 windowBits, Int32 memLevel, ZLibNative.CompressionStrategy strategy)
        {
            var errorCode = ZLibNative.CreateZLibStreamForDeflate(out m_handle, compressionLevel, windowBits, memLevel, strategy);

            switch (errorCode)
            {
            case ZLibNative.ErrorCode.Ok:
                return;

            case ZLibNative.ErrorCode.MemError:
                throw new IOException("The underlying compression routine could not reserve sufficient memory.");

            case ZLibNative.ErrorCode.VersionError:
                throw new IOException("The version of the underlying compression routine does not match expected version.");

            case ZLibNative.ErrorCode.StreamError:
                throw new IOException("The underlying compression routine received incorrect initialization parameters.");

            default:
                throw new IOException($"The underlying compression routine returned an unexpected error code {errorCode}.");
            }
        }
Exemplo n.º 9
0
            public ZLibNative.ErrorCode DeflateInit2_(ZLibNative.CompressionLevel level, int windowBits, int memLevel, ZLibNative.CompressionStrategy strategy)
            {
                this.EnsureNotDisposed();
                this.EnsureState(ZLibNative.ZLibStreamHandle.State.NotInitialized);
                bool success = false;

                RuntimeHelpers.PrepareConstrainedRegions();
                ZLibNative.ErrorCode errorCode;
                try
                {
                }
                finally
                {
                    errorCode = ZLibNative.ZLibStreamHandle.NativeZLibDLLStub.deflateInit2_Delegate(ref this.zStream, level, ZLibNative.CompressionMethod.Deflated, windowBits, memLevel, strategy, "1.2.3", Marshal.SizeOf((object)this.zStream));
                    this.initializationState = ZLibNative.ZLibStreamHandle.State.InitializedForDeflate;
                    ZLibNative.ZLibStreamHandle.zlibLibraryHandle.DangerousAddRef(ref success);
                }
                return(errorCode);
            }
Exemplo n.º 10
0
 public static ZLibNative.ErrorCode CreateZLibStreamForDeflate(out ZLibNative.ZLibStreamHandle zLibStreamHandle, ZLibNative.CompressionLevel level, int windowBits, int memLevel, ZLibNative.CompressionStrategy strategy)
 {
     zLibStreamHandle = new ZLibNative.ZLibStreamHandle();
     return(zLibStreamHandle.DeflateInit2_(level, windowBits, memLevel, strategy));
 }