Class PerMessageDeflateServerExtensionHandshaker
java.lang.Object
io.netty.handler.codec.http.websocketx.extensions.compression.PerMessageDeflateServerExtensionHandshaker
- All Implemented Interfaces:
WebSocketServerExtensionHandshaker
public final class PerMessageDeflateServerExtensionHandshaker
extends Object
implements WebSocketServerExtensionHandshaker
permessage-deflate
handshake implementation.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate final boolean(package private) static final String(package private) static final Stringprivate final intstatic final intDefault memory level used for deflate compression (zlib MAX_MEM_LEVEL).private final WebSocketExtensionFilterProviderstatic final intstatic final intprivate final intprivate final intstatic final intstatic final int(package private) static final Stringprivate final booleanprivate final int(package private) static final String(package private) static final Stringprivate final int -
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.PerMessageDeflateServerExtensionHandshaker(int maxAllocation) Constructor with default configuration.PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext) PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int maxAllocation) Constructor with custom configuration.PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int serverWindowSize, int memLevel, int maxAllocation) Constructor with custom configuration including server-side compressor memory limits.PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int serverWindowSize, int memLevel, WebSocketExtensionFilterProvider extensionFilterProvider, int maxAllocation) Constructor with full custom configuration.PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, WebSocketExtensionFilterProvider extensionFilterProvider) PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, WebSocketExtensionFilterProvider extensionFilterProvider, int maxAllocation) -
Method Summary
Modifier and TypeMethodDescriptionhandshakeExtension(WebSocketExtensionData extensionData) Handshake based on client request.
-
Field Details
-
MIN_WINDOW_SIZE
public static final int MIN_WINDOW_SIZE- See Also:
-
MAX_WINDOW_SIZE
public static final int MAX_WINDOW_SIZE- See Also:
-
PERMESSAGE_DEFLATE_EXTENSION
- See Also:
-
CLIENT_MAX_WINDOW
- See Also:
-
SERVER_MAX_WINDOW
- See Also:
-
CLIENT_NO_CONTEXT
- See Also:
-
SERVER_NO_CONTEXT
- See Also:
-
DEFAULT_MEM_LEVEL
public static final int DEFAULT_MEM_LEVELDefault memory level used for deflate compression (zlib MAX_MEM_LEVEL).- See Also:
-
MIN_MEM_LEVEL
public static final int MIN_MEM_LEVEL- See Also:
-
MAX_MEM_LEVEL
public static final int MAX_MEM_LEVEL- See Also:
-
compressionLevel
private final int compressionLevel -
allowServerWindowSize
private final boolean allowServerWindowSize -
preferredClientWindowSize
private final int preferredClientWindowSize -
allowServerNoContext
private final boolean allowServerNoContext -
preferredClientNoContext
private final boolean preferredClientNoContext -
serverWindowSize
private final int serverWindowSize -
memLevel
private final int memLevel -
extensionFilterProvider
-
maxAllocation
private final int maxAllocation
-
-
Constructor Details
-
PerMessageDeflateServerExtensionHandshaker
Deprecated.UsePerMessageDeflateServerExtensionHandshaker(int)}.invalid @link
{@link PerMessageDeflateServerExtensionHandshaker#Constructor with default configuration. -
PerMessageDeflateServerExtensionHandshaker
public PerMessageDeflateServerExtensionHandshaker(int maxAllocation) Constructor with default configuration.- Parameters:
maxAllocation- Maximum size of the decompression buffer. Must be >= 0. If zero, maximum size is not limited.
-
PerMessageDeflateServerExtensionHandshaker
@Deprecated public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext) Deprecated.Constructor with custom configuration.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).
-
PerMessageDeflateServerExtensionHandshaker
public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int maxAllocation) Constructor with custom configuration.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).maxAllocation- Maximum size of the decompression buffer. Must be >= 0. If zero, maximum size is not limited.
-
PerMessageDeflateServerExtensionHandshaker
public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int serverWindowSize, int memLevel, int maxAllocation) Constructor with custom configuration including server-side compressor memory limits.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).serverWindowSize- upper bound (in bits, 8-15) on the server-side deflate window. If the client offersserver_max_window_bits=N, the negotiated value ismin(N, serverWindowSize). Set lower thanMAX_WINDOW_SIZEto reduce per-connection memory.memLevel- zlib memory level for the server-side deflater (1-9). Lower values reduce per-connection memory at the cost of compression ratio.maxAllocation- Maximum size of the decompression buffer. Must be >= 0. If zero, maximum size is not limited.
-
PerMessageDeflateServerExtensionHandshaker
@Deprecated public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, WebSocketExtensionFilterProvider extensionFilterProvider) Deprecated.Constructor with custom configuration.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).extensionFilterProvider- provides server extension filters for per message deflate encoder and decoder.
-
PerMessageDeflateServerExtensionHandshaker
@Deprecated public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, WebSocketExtensionFilterProvider extensionFilterProvider, int maxAllocation) Deprecated.Constructor with custom configuration.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).extensionFilterProvider- provides server extension filters for per message deflate encoder and decoder.maxAllocation- Maximum size of the decompression buffer. Must be >= 0. If zero, maximum size is not limited.
-
PerMessageDeflateServerExtensionHandshaker
public PerMessageDeflateServerExtensionHandshaker(int compressionLevel, boolean allowServerWindowSize, int preferredClientWindowSize, boolean allowServerNoContext, boolean preferredClientNoContext, int serverWindowSize, int memLevel, WebSocketExtensionFilterProvider extensionFilterProvider, int maxAllocation) Constructor with full custom configuration.- Parameters:
compressionLevel- Compression level between 0 and 9 (default is 6).allowServerWindowSize- allows WebSocket client to customize the server inflater window size (default is false).preferredClientWindowSize- indicates the preferred client window size to use if client inflater is customizable.allowServerNoContext- allows WebSocket client to activate server_no_context_takeover (default is false).preferredClientNoContext- indicates if server prefers to activate client_no_context_takeover if client is compatible with (default is false).serverWindowSize- upper bound (in bits, 8-15) on the server-side deflate window. If the client offersserver_max_window_bits=N, the negotiated value ismin(N, serverWindowSize). Per RFC 7692 ยง7.1.2.1 the server may includeserver_max_window_bitswith the same or smaller value than the offer; this handshaker also advertises it unilaterally whenserverWindowSizeis less thanMAX_WINDOW_SIZE.memLevel- zlib memory level for the server-side deflater (1-9). Lower values reduce per-connection memory at the cost of compression ratio.extensionFilterProvider- provides server extension filters for per message deflate encoder and decoder.maxAllocation- Maximum size of the decompression buffer. Must be >= 0. If zero, maximum size is not limited.
-
-
Method Details
-
handshakeExtension
Description copied from interface:WebSocketServerExtensionHandshakerHandshake based on client request. It must failed with null if server cannot handle it.- Specified by:
handshakeExtensionin interfaceWebSocketServerExtensionHandshaker- Parameters:
extensionData- the extension configuration sent by the client.- Returns:
- an initialized extension if handshake phase succeed or null if failed.
-
invalid @link
{@link PerMessageDeflateServerExtensionHandshaker#