C# Класс Cimbalino.Phone.Toolkit.Compression.ZlibCodec

Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951).
This class compresses and decompresses data according to the Deflate algorithm and optionally, the ZLIB format, as documented in RFC 1950 - ZLIB and RFC 1951 - DEFLATE.
Показать файл Открыть проект Примеры использования класса

Открытые свойства

Свойство Тип Описание
AvailableBytesIn int
AvailableBytesOut int
CompressLevel CompressionLevel
InputBuffer byte[]
Message System.String
NextIn int
NextOut int
OutputBuffer byte[]
Strategy CompressionStrategy
TotalBytesIn long
TotalBytesOut long
WindowBits int

Открытые методы

Метод Описание
Deflate ( FlushType flush ) : int

Deflate one batch of data.

You must have set InputBuffer and OutputBuffer before calling this method.

EndDeflate ( ) : int

End a deflation session.

Call this after making a series of one or more calls to Deflate(). All buffers are flushed.

EndInflate ( ) : int

Ends an inflation session.

Call this after successively calling Inflate(). This will cause all buffers to be flushed. After calling this you cannot call Inflate() without a intervening call to one of the InitializeInflate() overloads.

Inflate ( FlushType flush ) : int

Inflate the data in the InputBuffer, placing the result in the OutputBuffer.

You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and AvailableBytesOut before calling this method.

InitializeDeflate ( ) : int

Initialize the ZlibCodec for deflation operation.

The codec will use the MAX window bits and the default level of compression.

InitializeDeflate ( CompressionLevel level ) : int

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel.

The codec will use the maximum window bits (15) and the specified CompressionLevel. It will emit a ZLIB stream as it compresses.

InitializeDeflate ( CompressionLevel level, bool wantRfc1950Header ) : int

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, and the explicit flag governing whether to emit an RFC1950 header byte pair.

The codec will use the maximum window bits (15) and the specified CompressionLevel. If you want to generate a zlib stream, you should specify true for wantRfc1950Header. In this case, the library will emit a ZLIB header, as defined in RFC 1950, in the compressed stream.

InitializeDeflate ( CompressionLevel level, int bits ) : int

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, and the specified number of window bits.

The codec will use the specified number of window bits and the specified CompressionLevel.

InitializeDeflate ( CompressionLevel level, int bits, bool wantRfc1950Header ) : int

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, the specified number of window bits, and the explicit flag governing whether to emit an RFC1950 header byte pair.

InitializeInflate ( ) : int

Initialize the inflation state.

It is not necessary to call this before using the ZlibCodec to inflate data; It is implicitly called when you call the constructor.

InitializeInflate ( bool expectRfc1950Header ) : int

Initialize the inflation state with an explicit flag to govern the handling of RFC1950 header bytes.

By default, the ZLIB header defined in RFC 1950 is expected. If you want to read a zlib stream you should specify true for expectRfc1950Header. If you have a deflate stream, you will want to specify false. It is only necessary to invoke this initializer explicitly if you want to specify false.

InitializeInflate ( int windowBits ) : int

Initialize the ZlibCodec for inflation, with the specified number of window bits.

InitializeInflate ( int windowBits, bool expectRfc1950Header ) : int

Initialize the inflation state with an explicit flag to govern the handling of RFC1950 header bytes.

If you want to read a zlib stream you should specify true for expectRfc1950Header. In this case, the library will expect to find a ZLIB header, as defined in RFC 1950, in the compressed stream. If you will be reading a DEFLATE or GZIP stream, which does not have such a header, you will want to specify false.

ResetDeflate ( ) : void

Reset a codec for another deflation session.

Call this to reset the deflation state. For example if a thread is deflating non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first block and before the next Deflate(None) of the second block.

SetDeflateParams ( CompressionLevel level, CompressionStrategy strategy ) : int

Set the CompressionStrategy and CompressionLevel for a deflation session.

SetDictionary ( byte dictionary ) : int

Set the dictionary to be used for either Inflation or Deflation.

SyncInflate ( ) : int

I don't know what this does!

ZlibCodec ( ) : System

Create a ZlibCodec.

If you use this default constructor, you will later have to explicitly call InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress or decompress.

ZlibCodec ( CompressionMode mode ) : System

Create a ZlibCodec that either compresses or decompresses.

Приватные методы

Метод Описание
_InternalInitializeDeflate ( bool wantRfc1950Header ) : int
flush_pending ( ) : void
read_buf ( byte buf, int start, int size ) : int

Описание методов

Deflate() публичный Метод

Deflate one batch of data.
You must have set InputBuffer and OutputBuffer before calling this method.
public Deflate ( FlushType flush ) : int
flush FlushType whether to flush all data as you deflate. Generally you will want to /// use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to /// flush everything. ///
Результат int

EndDeflate() публичный Метод

End a deflation session.
Call this after making a series of one or more calls to Deflate(). All buffers are flushed.
public EndDeflate ( ) : int
Результат int

EndInflate() публичный Метод

Ends an inflation session.
Call this after successively calling Inflate(). This will cause all buffers to be flushed. After calling this you cannot call Inflate() without a intervening call to one of the InitializeInflate() overloads.
public EndInflate ( ) : int
Результат int

Inflate() публичный Метод

Inflate the data in the InputBuffer, placing the result in the OutputBuffer.
You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and AvailableBytesOut before calling this method.
public Inflate ( FlushType flush ) : int
flush FlushType The flush to use when inflating.
Результат int

InitializeDeflate() публичный Метод

Initialize the ZlibCodec for deflation operation.
The codec will use the MAX window bits and the default level of compression.
public InitializeDeflate ( ) : int
Результат int

InitializeDeflate() публичный Метод

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel.
The codec will use the maximum window bits (15) and the specified CompressionLevel. It will emit a ZLIB stream as it compresses.
public InitializeDeflate ( CompressionLevel level ) : int
level CompressionLevel The compression level for the codec.
Результат int

InitializeDeflate() публичный Метод

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, and the explicit flag governing whether to emit an RFC1950 header byte pair.
The codec will use the maximum window bits (15) and the specified CompressionLevel. If you want to generate a zlib stream, you should specify true for wantRfc1950Header. In this case, the library will emit a ZLIB header, as defined in RFC 1950, in the compressed stream.
public InitializeDeflate ( CompressionLevel level, bool wantRfc1950Header ) : int
level CompressionLevel The compression level for the codec.
wantRfc1950Header bool whether to emit an initial RFC1950 byte pair in the compressed stream.
Результат int

InitializeDeflate() публичный Метод

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, and the specified number of window bits.
The codec will use the specified number of window bits and the specified CompressionLevel.
public InitializeDeflate ( CompressionLevel level, int bits ) : int
level CompressionLevel The compression level for the codec.
bits int the number of window bits to use. If you don't know what this means, don't use this method.
Результат int

InitializeDeflate() публичный Метод

Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, the specified number of window bits, and the explicit flag governing whether to emit an RFC1950 header byte pair.
public InitializeDeflate ( CompressionLevel level, int bits, bool wantRfc1950Header ) : int
level CompressionLevel The compression level for the codec.
bits int the number of window bits to use. If you don't know what this means, don't use this method.
wantRfc1950Header bool whether to emit an initial RFC1950 byte pair in the compressed stream.
Результат int

InitializeInflate() публичный Метод

Initialize the inflation state.
It is not necessary to call this before using the ZlibCodec to inflate data; It is implicitly called when you call the constructor.
public InitializeInflate ( ) : int
Результат int

InitializeInflate() публичный Метод

Initialize the inflation state with an explicit flag to govern the handling of RFC1950 header bytes.
By default, the ZLIB header defined in RFC 1950 is expected. If you want to read a zlib stream you should specify true for expectRfc1950Header. If you have a deflate stream, you will want to specify false. It is only necessary to invoke this initializer explicitly if you want to specify false.
public InitializeInflate ( bool expectRfc1950Header ) : int
expectRfc1950Header bool whether to expect an RFC1950 header byte /// pair when reading the stream of data to be inflated.
Результат int

InitializeInflate() публичный Метод

Initialize the ZlibCodec for inflation, with the specified number of window bits.
public InitializeInflate ( int windowBits ) : int
windowBits int The number of window bits to use. If you need to ask what that is, /// then you shouldn't be calling this initializer.
Результат int

InitializeInflate() публичный Метод

Initialize the inflation state with an explicit flag to govern the handling of RFC1950 header bytes.
If you want to read a zlib stream you should specify true for expectRfc1950Header. In this case, the library will expect to find a ZLIB header, as defined in RFC 1950, in the compressed stream. If you will be reading a DEFLATE or GZIP stream, which does not have such a header, you will want to specify false.
public InitializeInflate ( int windowBits, bool expectRfc1950Header ) : int
windowBits int The number of window bits to use. If you need to ask what that is, /// then you shouldn't be calling this initializer.
expectRfc1950Header bool whether to expect an RFC1950 header byte pair when reading /// the stream of data to be inflated.
Результат int

ResetDeflate() публичный Метод

Reset a codec for another deflation session.
Call this to reset the deflation state. For example if a thread is deflating non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first block and before the next Deflate(None) of the second block.
public ResetDeflate ( ) : void
Результат void

SetDeflateParams() публичный Метод

Set the CompressionStrategy and CompressionLevel for a deflation session.
public SetDeflateParams ( CompressionLevel level, CompressionStrategy strategy ) : int
level CompressionLevel the level of compression to use.
strategy CompressionStrategy the strategy to use for compression.
Результат int

SetDictionary() публичный Метод

Set the dictionary to be used for either Inflation or Deflation.
public SetDictionary ( byte dictionary ) : int
dictionary byte The dictionary bytes to use.
Результат int

SyncInflate() публичный Метод

I don't know what this does!
public SyncInflate ( ) : int
Результат int

ZlibCodec() публичный Метод

Create a ZlibCodec.
If you use this default constructor, you will later have to explicitly call InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress or decompress.
public ZlibCodec ( ) : System
Результат System

ZlibCodec() публичный Метод

Create a ZlibCodec that either compresses or decompresses.
public ZlibCodec ( CompressionMode mode ) : System
mode CompressionMode /// Indicates whether the codec should compress (deflate) or decompress (inflate). ///
Результат System

Описание свойств

AvailableBytesIn публичное свойство

The number of bytes available in the InputBuffer, starting at NextIn.
Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. The class will update this number as calls to Inflate/Deflate are made.
public int AvailableBytesIn
Результат int

AvailableBytesOut публичное свойство

The number of bytes available in the OutputBuffer, starting at NextOut.
Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. The class will update this number as calls to Inflate/Deflate are made.
public int AvailableBytesOut
Результат int

CompressLevel публичное свойство

The compression level to use in this codec. Useful only in compression mode.
public CompressionLevel CompressLevel
Результат CompressionLevel

InputBuffer публичное свойство

The buffer from which data is taken.
public byte[] InputBuffer
Результат byte[]

Message публичное свойство

used for diagnostics, when something goes wrong!
public String,System Message
Результат System.String

NextIn публичное свойство

An index into the InputBuffer array, indicating where to start reading.
public int NextIn
Результат int

NextOut публичное свойство

An index into the OutputBuffer array, indicating where to start writing.
public int NextOut
Результат int

OutputBuffer публичное свойство

Buffer to store output data.
public byte[] OutputBuffer
Результат byte[]

Strategy публичное свойство

The compression strategy to use.
This is only effective in compression. The theory offered by ZLIB is that different strategies could potentially produce significant differences in compression behavior for different data sets. Unfortunately I don't have any good recommendations for how to set it differently. When I tested changing the strategy I got minimally different compression performance. It's best to leave this property alone if you don't have a good feel for it. Or, you may want to produce a test harness that runs through the different strategy options and evaluates them on different file types. If you do that, let me know your results.
public CompressionStrategy Strategy
Результат CompressionStrategy

TotalBytesIn публичное свойство

Total number of bytes read so far, through all calls to Inflate()/Deflate().
public long TotalBytesIn
Результат long

TotalBytesOut публичное свойство

Total number of bytes written to the output so far, through all calls to Inflate()/Deflate().
public long TotalBytesOut
Результат long

WindowBits публичное свойство

The number of Window Bits to use.
This gauges the size of the sliding window, and hence the compression effectiveness as well as memory consumption. It's best to just leave this setting alone if you don't know what it is. The maximum value is 15 bits, which implies a 32k window.
public int WindowBits
Результат int