io.undertow.conduits

## Class DeflatingStreamSinkConduit

- java.lang.Object
- - io.undertow.conduits.DeflatingStreamSinkConduit

All Implemented Interfaces:
  org.xnio.conduits.Conduit, org.xnio.conduits.SinkConduit, org.xnio.conduits.StreamSinkConduit

Direct Known Subclasses:
  GzipStreamSinkConduit

    public class DeflatingStreamSinkConduit
    extends Object
    implements org.xnio.conduits.StreamSinkConduit

Channel that handles deflate compression

Author:
  Stuart Douglas

### Field Summary

Fields
`protected PooledByteBuffer` `currentBuffer` The streams buffer.
`protected Deflater` `deflater`
`protected PooledObject<Deflater>` `pooledObject`

### Constructor Summary

Constructors
Constructor and Description
`DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory, HttpServerExchange exchange)`
`DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory, HttpServerExchange exchange, int deflateLevel)`
`DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory, HttpServerExchange exchange, ObjectPool<Deflater> deflaterPool)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `awaitWritable()`
`void` `awaitWritable(long time, TimeUnit timeUnit)`
`boolean` `flush()`
`protected byte[]` `getTrailer()` called before the stream is finally flushed.
`org.xnio.XnioWorker` `getWorker()`
`org.xnio.XnioIoThread` `getWriteThread()`
`boolean` `isWriteResumed()`
`boolean` `isWriteShutdown()`
`static ObjectPool<Deflater>` `newInstanceDeflaterPool(int deflateLevel)`
`protected void` `preDeflate(byte[] data)`
`void` `resumeWrites()`
`void` `setWriteReadyHandler(org.xnio.conduits.WriteReadyHandler handler)`
`static ObjectPool<Deflater>` `simpleDeflaterPool(int poolSize, int deflateLevel)`
`void` `suspendWrites()`
`void` `terminateWrites()`
`long` `transferFrom(FileChannel src, long position, long count)`
`long` `transferFrom(org.xnio.channels.StreamSourceChannel source, long count, ByteBuffer throughBuffer)`
`void` `truncateWrites()`
`void` `wakeupWrites()`
`int` `write(ByteBuffer src)`
`long` `write(ByteBuffer[] srcs, int offset, int length)`
`int` `writeFinal(ByteBuffer src)`
`long` `writeFinal(ByteBuffer[] srcs, int offset, int length)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### deflater

    protected volatile Deflater deflater

#### pooledObject

    protected final PooledObject<Deflater> pooledObject

#### currentBuffer

    protected PooledByteBuffer currentBuffer

The streams buffer. This is freed when the next is shutdown

### Constructor Detail

#### DeflatingStreamSinkConduit

    public DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory,
                                      HttpServerExchange exchange)

#### DeflatingStreamSinkConduit

    public DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory,
                                      HttpServerExchange exchange,
                                      int deflateLevel)

#### DeflatingStreamSinkConduit

    public DeflatingStreamSinkConduit(ConduitFactory<org.xnio.conduits.StreamSinkConduit> conduitFactory,
                                      HttpServerExchange exchange,
                                      ObjectPool<Deflater> deflaterPool)

### Method Detail

#### newInstanceDeflaterPool

    public static ObjectPool<Deflater> newInstanceDeflaterPool(int deflateLevel)

#### simpleDeflaterPool

    public static ObjectPool<Deflater> simpleDeflaterPool(int poolSize,
                                                          int deflateLevel)

#### write

    public int write(ByteBuffer src)
              throws IOException

Specified by:
  `write` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### preDeflate

    protected void preDeflate(byte[] data)

#### write

    public long write(ByteBuffer[] srcs,
                      int offset,
                      int length)
               throws IOException

Specified by:
  `write` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### writeFinal

    public int writeFinal(ByteBuffer src)
                   throws IOException

Specified by:
  `writeFinal` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### writeFinal

    public long writeFinal(ByteBuffer[] srcs,
                           int offset,
                           int length)
                    throws IOException

Specified by:
  `writeFinal` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### transferFrom

    public long transferFrom(FileChannel src,
                             long position,
                             long count)
                      throws IOException

Specified by:
  `transferFrom` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### transferFrom

    public long transferFrom(org.xnio.channels.StreamSourceChannel source,
                             long count,
                             ByteBuffer throughBuffer)
                      throws IOException

Specified by:
  `transferFrom` in interface `org.xnio.conduits.StreamSinkConduit`
Throws:
  `IOException`

#### getWorker

    public org.xnio.XnioWorker getWorker()

Specified by:
  `getWorker` in interface `org.xnio.conduits.Conduit`

#### suspendWrites

    public void suspendWrites()

Specified by:
  `suspendWrites` in interface `org.xnio.conduits.SinkConduit`

#### isWriteResumed

    public boolean isWriteResumed()

Specified by:
  `isWriteResumed` in interface `org.xnio.conduits.SinkConduit`

#### wakeupWrites

    public void wakeupWrites()

Specified by:
  `wakeupWrites` in interface `org.xnio.conduits.SinkConduit`

#### resumeWrites

    public void resumeWrites()

Specified by:
  `resumeWrites` in interface `org.xnio.conduits.SinkConduit`

#### terminateWrites

    public void terminateWrites()
                         throws IOException

Specified by:
  `terminateWrites` in interface `org.xnio.conduits.SinkConduit`
Throws:
  `IOException`

#### isWriteShutdown

    public boolean isWriteShutdown()

Specified by:
  `isWriteShutdown` in interface `org.xnio.conduits.SinkConduit`

#### awaitWritable

    public void awaitWritable()
                       throws IOException

Specified by:
  `awaitWritable` in interface `org.xnio.conduits.SinkConduit`
Throws:
  `IOException`

#### awaitWritable

    public void awaitWritable(long time,
                              TimeUnit timeUnit)
                       throws IOException

Specified by:
  `awaitWritable` in interface `org.xnio.conduits.SinkConduit`
Throws:
  `IOException`

#### getWriteThread

    public org.xnio.XnioIoThread getWriteThread()

Specified by:
  `getWriteThread` in interface `org.xnio.conduits.SinkConduit`

#### setWriteReadyHandler

    public void setWriteReadyHandler(org.xnio.conduits.WriteReadyHandler handler)

Specified by:
  `setWriteReadyHandler` in interface `org.xnio.conduits.SinkConduit`

#### flush

    public boolean flush()
                  throws IOException

Specified by:
  `flush` in interface `org.xnio.conduits.SinkConduit`
Throws:
  `IOException`

#### getTrailer

    protected byte[] getTrailer()

called before the stream is finally flushed.

#### truncateWrites

    public void truncateWrites()
                        throws IOException

Specified by:
  `truncateWrites` in interface `org.xnio.conduits.SinkConduit`
Throws:
  `IOException`