Class PerMessageDeflateFunction
java.lang.Object
io.undertow.websockets.extensions.PerMessageDeflateFunction
- All Implemented Interfaces:
ExtensionFunction
Implementation of
permessage-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
and Inflater
classes.
- Author:
- Lucas Ponce
- See Also:
-
Field Summary
Fields inherited from interface io.undertow.websockets.extensions.ExtensionFunction
RSV1, RSV2, RSV3
-
Constructor Summary
ConstructorsConstructorDescriptionPerMessageDeflateFunction
(int deflaterLevel, boolean compressContextTakeover, boolean decompressContextTakeover) Create a newPerMessageDeflateExtension
instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
dispose()
Dispose this function.boolean
Validate if current extension defines a new WebSocket Opcode.transformForRead
(PooledByteBuffer pooledBuffer, StreamSourceFrameChannel channel, boolean lastFragmentOfMessage) Transform the supplied buffer per this extension.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 Details
-
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 Details
-
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:
-
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
-