Package org.apache.tomcat.websocket
Class PerMessageDeflate
- java.lang.Object
-
- org.apache.tomcat.websocket.PerMessageDeflate
-
- All Implemented Interfaces:
Transformation
public class PerMessageDeflate extends java.lang.Object implements Transformation
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
NAME
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Clean-up any resources that were used by the transformation.Extension
getExtensionResponse()
Obtain the extension that describes the information to be returned to the client.TransformationResult
getMoreData(byte opCode, boolean fin, int rsv, java.nio.ByteBuffer dest)
Obtain more input data.java.util.List<org.apache.tomcat.websocket.MessagePart>
sendMessagePart(java.util.List<org.apache.tomcat.websocket.MessagePart> uncompressedParts)
Takes the provided list of messages, transforms them, passes the transformed list on to the next transformation (if any) and then returns the resulting list of message parts after all of the transformations have been applied.void
setNext(Transformation t)
Sets the next transformation in the pipeline.boolean
validateRsv(int rsv, byte opCode)
Validates the RSV and opcode combination (assumed to have been extracted from a WebSocket Frame) for this extension.boolean
validateRsvBits(int i)
Validate that the RSV bit(s) required by this transformation are not being used by another extension.
-
-
-
Field Detail
-
NAME
public static final java.lang.String NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
getMoreData
public TransformationResult getMoreData(byte opCode, boolean fin, int rsv, java.nio.ByteBuffer dest) throws java.io.IOException
Description copied from interface:Transformation
Obtain more input data.- Specified by:
getMoreData
in interfaceTransformation
- Parameters:
opCode
- The opcode for the frame currently being processedfin
- Is this the final frame in this WebSocket message?rsv
- The reserved bits for the frame currently being processeddest
- The buffer in which the data is to be written- Returns:
- The result of trying to read more data from the transform
- Throws:
java.io.IOException
- If an I/O error occurs while reading data from the transform
-
validateRsv
public boolean validateRsv(int rsv, byte opCode)
Description copied from interface:Transformation
Validates the RSV and opcode combination (assumed to have been extracted from a WebSocket Frame) for this extension. The implementation is expected to unset any RSV bits it has validated before passing the remaining RSV bits to the next transformation in the pipeline.- Specified by:
validateRsv
in interfaceTransformation
- Parameters:
rsv
- The RSV bits received as an int in the range zero to seven with RSV1 as the MSB and RSV3 as the LSBopCode
- The opCode received- Returns:
true
if the RSV is valid otherwisefalse
-
getExtensionResponse
public Extension getExtensionResponse()
Description copied from interface:Transformation
Obtain the extension that describes the information to be returned to the client.- Specified by:
getExtensionResponse
in interfaceTransformation
- Returns:
- The extension information that describes the parameters that have been agreed for this transformation
-
setNext
public void setNext(Transformation t)
Description copied from interface:Transformation
Sets the next transformation in the pipeline.- Specified by:
setNext
in interfaceTransformation
- Parameters:
t
- The next transformation
-
validateRsvBits
public boolean validateRsvBits(int i)
Description copied from interface:Transformation
Validate that the RSV bit(s) required by this transformation are not being used by another extension. The implementation is expected to set any bits it requires before passing the set of in-use bits to the next transformation.- Specified by:
validateRsvBits
in interfaceTransformation
- Parameters:
i
- The RSV bits marked as in use so far as an int in the range zero to seven with RSV1 as the MSB and RSV3 as the LSB- Returns:
true
if the combination of RSV bits used by the transformations in the pipeline do not conflict otherwisefalse
-
sendMessagePart
public java.util.List<org.apache.tomcat.websocket.MessagePart> sendMessagePart(java.util.List<org.apache.tomcat.websocket.MessagePart> uncompressedParts) throws java.io.IOException
Description copied from interface:Transformation
Takes the provided list of messages, transforms them, passes the transformed list on to the next transformation (if any) and then returns the resulting list of message parts after all of the transformations have been applied.- Specified by:
sendMessagePart
in interfaceTransformation
- Parameters:
uncompressedParts
- The list of messages to be transformed- Returns:
- The list of messages after this any any subsequent transformations have been applied. The size of the returned list may be bigger or smaller than the size of the input list
- Throws:
java.io.IOException
- If an error occurs during the transformation of the message parts
-
close
public void close()
Description copied from interface:Transformation
Clean-up any resources that were used by the transformation.- Specified by:
close
in interfaceTransformation
-
-