Class PerMessageDeflateFunction
- java.lang.Object
-
- io.undertow.websockets.extensions.PerMessageDeflateFunction
-
- All Implemented Interfaces:
ExtensionFunction
public class PerMessageDeflateFunction extends Object implements ExtensionFunction
Implementation ofpermessage-deflate
WebSocket Extension.This implementation supports parameters:
server_no_context_takeover, client_no_context_takeover
.This implementation does not support parameters:
server_max_window_bits, client_max_window_bits
.It uses the DEFLATE implementation algorithm packaged on
Deflater
andInflater
classes.- Author:
- Lucas Ponce
- See Also:
- Compression Extensions for WebSocket
-
-
Field Summary
-
Fields inherited from interface io.undertow.websockets.extensions.ExtensionFunction
RSV1, RSV2, RSV3
-
-
Constructor Summary
Constructors Constructor Description PerMessageDeflateFunction(int deflaterLevel, boolean compressContextTakeover, boolean decompressContextTakeover)
Create a newPerMessageDeflateExtension
instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
Dispose this function.boolean
hasExtensionOpCode()
Validate if current extension defines a new WebSocket Opcode.PooledByteBuffer
transformForRead(PooledByteBuffer pooledBuffer, StreamSourceFrameChannel channel, boolean lastFragmentOfMessage)
Transform the supplied buffer per this extension.PooledByteBuffer
transformForWrite(PooledByteBuffer pooledBuffer, StreamSinkFrameChannel channel, boolean lastFrame)
Transform the supplied buffer per this extension.int
writeRsv(int rsv)
Add RSV bits (RSV1, RSV2, RSV3) to the current rsv status.
-
-
-
Constructor Detail
-
PerMessageDeflateFunction
public PerMessageDeflateFunction(int deflaterLevel, boolean compressContextTakeover, boolean decompressContextTakeover)
Create a newPerMessageDeflateExtension
instance.- Parameters:
deflaterLevel
- the level of configuration of DEFLATE algorithm implementationcompressContextTakeover
- flag for compressor context takeover or without compressor contextdecompressContextTakeover
- flag for decompressor context takeover or without decompressor context
-
-
Method Detail
-
writeRsv
public int writeRsv(int rsv)
Description copied from interface:ExtensionFunction
Add RSV bits (RSV1, RSV2, RSV3) to the current rsv status.- Specified by:
writeRsv
in interfaceExtensionFunction
- Parameters:
rsv
- current RSV bits status- Returns:
- rsv status
-
hasExtensionOpCode
public boolean hasExtensionOpCode()
Description copied from interface:ExtensionFunction
Validate if current extension defines a new WebSocket Opcode.- Specified by:
hasExtensionOpCode
in interfaceExtensionFunction
- Returns:
true
if current extension defines specific Opcodefalse
is current extension does not define specific Opcode- See Also:
- WebSocket Base Framing Protocol Reference
-
transformForWrite
public PooledByteBuffer transformForWrite(PooledByteBuffer pooledBuffer, StreamSinkFrameChannel channel, boolean lastFrame) throws IOException
Description copied from interface:ExtensionFunction
Transform the supplied buffer per this extension. The buffer can be modified in place, or a new pooled buffer can be returned (in which case be sure to free the original buffer- Specified by:
transformForWrite
in interfaceExtensionFunction
- Parameters:
pooledBuffer
- Buffer to transformchannel
- working channel- Returns:
- transformed buffer (may be the same one, just with modified contents)
- Throws:
IOException
-
transformForRead
public PooledByteBuffer transformForRead(PooledByteBuffer pooledBuffer, StreamSourceFrameChannel channel, boolean lastFragmentOfMessage) throws IOException
Description copied from interface:ExtensionFunction
Transform the supplied buffer per this extension. The buffer can be modified in place, or a new pooled buffer can be returned (in which case be sure to free the original buffer- Specified by:
transformForRead
in interfaceExtensionFunction
- Parameters:
pooledBuffer
- Buffer to transformchannel
- working channellastFragmentOfMessage
- If this frame is the last fragment of a message. Note that this may not be received for every message, if the message ends with an empty frame- Returns:
- transformed buffer (may be the same one, just with modified contents)
- Throws:
IOException
-
dispose
public void dispose()
Description copied from interface:ExtensionFunction
Dispose this function. Called upon connection closure- Specified by:
dispose
in interfaceExtensionFunction
-
-