Package 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 Modifier and Type Field Description protected PooledByteBuffer
currentBuffer
The streams buffer.protected Deflater
deflater
protected PooledObject<Deflater>
pooledObject
-
Constructor Summary
Constructors Constructor 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 Modifier and Type Method Description 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)
-
-
-
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 interfaceorg.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 interfaceorg.xnio.conduits.StreamSinkConduit
- Throws:
IOException
-
writeFinal
public int writeFinal(ByteBuffer src) throws IOException
- Specified by:
writeFinal
in interfaceorg.xnio.conduits.StreamSinkConduit
- Throws:
IOException
-
writeFinal
public long writeFinal(ByteBuffer[] srcs, int offset, int length) throws IOException
- Specified by:
writeFinal
in interfaceorg.xnio.conduits.StreamSinkConduit
- Throws:
IOException
-
transferFrom
public long transferFrom(FileChannel src, long position, long count) throws IOException
- Specified by:
transferFrom
in interfaceorg.xnio.conduits.StreamSinkConduit
- Throws:
IOException
-
transferFrom
public long transferFrom(org.xnio.channels.StreamSourceChannel source, long count, ByteBuffer throughBuffer) throws IOException
- Specified by:
transferFrom
in interfaceorg.xnio.conduits.StreamSinkConduit
- Throws:
IOException
-
getWorker
public org.xnio.XnioWorker getWorker()
- Specified by:
getWorker
in interfaceorg.xnio.conduits.Conduit
-
suspendWrites
public void suspendWrites()
- Specified by:
suspendWrites
in interfaceorg.xnio.conduits.SinkConduit
-
isWriteResumed
public boolean isWriteResumed()
- Specified by:
isWriteResumed
in interfaceorg.xnio.conduits.SinkConduit
-
wakeupWrites
public void wakeupWrites()
- Specified by:
wakeupWrites
in interfaceorg.xnio.conduits.SinkConduit
-
resumeWrites
public void resumeWrites()
- Specified by:
resumeWrites
in interfaceorg.xnio.conduits.SinkConduit
-
terminateWrites
public void terminateWrites() throws IOException
- Specified by:
terminateWrites
in interfaceorg.xnio.conduits.SinkConduit
- Throws:
IOException
-
isWriteShutdown
public boolean isWriteShutdown()
- Specified by:
isWriteShutdown
in interfaceorg.xnio.conduits.SinkConduit
-
awaitWritable
public void awaitWritable() throws IOException
- Specified by:
awaitWritable
in interfaceorg.xnio.conduits.SinkConduit
- Throws:
IOException
-
awaitWritable
public void awaitWritable(long time, TimeUnit timeUnit) throws IOException
- Specified by:
awaitWritable
in interfaceorg.xnio.conduits.SinkConduit
- Throws:
IOException
-
getWriteThread
public org.xnio.XnioIoThread getWriteThread()
- Specified by:
getWriteThread
in interfaceorg.xnio.conduits.SinkConduit
-
setWriteReadyHandler
public void setWriteReadyHandler(org.xnio.conduits.WriteReadyHandler handler)
- Specified by:
setWriteReadyHandler
in interfaceorg.xnio.conduits.SinkConduit
-
flush
public boolean flush() throws IOException
- Specified by:
flush
in interfaceorg.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 interfaceorg.xnio.conduits.SinkConduit
- Throws:
IOException
-
-