Home / Function/ WebSocketServerExtension() — netty Function Reference

WebSocketServerExtension() — netty Function Reference

Architecture documentation for the WebSocketServerExtension() function in PerMessageDeflateServerExtensionHandshaker.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  a01e1140_3aa3_3cc8_c5a1_bc667b439d4d["WebSocketServerExtension()"]
  ff5c28aa_bf33_88bd_f12c_f405045d33d6["PerMessageDeflateServerExtensionHandshaker"]
  a01e1140_3aa3_3cc8_c5a1_bc667b439d4d -->|defined in| ff5c28aa_bf33_88bd_f12c_f405045d33d6
  d56cae2b_7c35_7afb_395d_d1f067324219["PermessageDeflateExtension()"]
  a01e1140_3aa3_3cc8_c5a1_bc667b439d4d -->|calls| d56cae2b_7c35_7afb_395d_d1f067324219
  style a01e1140_3aa3_3cc8_c5a1_bc667b439d4d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/compression/PerMessageDeflateServerExtensionHandshaker.java lines 205–257

    @Override
    public WebSocketServerExtension handshakeExtension(WebSocketExtensionData extensionData) {
        if (!PERMESSAGE_DEFLATE_EXTENSION.equals(extensionData.name())) {
            return null;
        }

        boolean deflateEnabled = true;
        int clientWindowSize = MAX_WINDOW_SIZE;
        int serverWindowSize = MAX_WINDOW_SIZE;
        boolean serverNoContext = false;
        boolean clientNoContext = false;

        Iterator<Entry<String, String>> parametersIterator =
                extensionData.parameters().entrySet().iterator();
        while (deflateEnabled && parametersIterator.hasNext()) {
            Entry<String, String> parameter = parametersIterator.next();

            if (CLIENT_MAX_WINDOW.equalsIgnoreCase(parameter.getKey())) {
             // use preferred clientWindowSize because client is compatible with customization
                clientWindowSize = preferredClientWindowSize;
            } else if (SERVER_MAX_WINDOW.equalsIgnoreCase(parameter.getKey())) {
                // use provided windowSize if it is allowed
                if (allowServerWindowSize) {
                    serverWindowSize = Integer.parseInt(parameter.getValue());
                    if (serverWindowSize > MAX_WINDOW_SIZE || serverWindowSize < MIN_WINDOW_SIZE) {
                        deflateEnabled = false;
                    }
                } else {
                    deflateEnabled = false;
                }
            } else if (CLIENT_NO_CONTEXT.equalsIgnoreCase(parameter.getKey())) {
                // use preferred clientNoContext because client is compatible with customization
                clientNoContext = preferredClientNoContext;
            } else if (SERVER_NO_CONTEXT.equalsIgnoreCase(parameter.getKey())) {
                // use server no context if allowed
                if (allowServerNoContext) {
                    serverNoContext = true;
                } else {
                    deflateEnabled = false;
                }
            } else {
                // unknown parameter
                deflateEnabled = false;
            }
        }

        if (deflateEnabled) {
            return new PermessageDeflateExtension(compressionLevel, serverNoContext,
                    serverWindowSize, clientNoContext, clientWindowSize, extensionFilterProvider, maxAllocation);
        } else {
            return null;
        }
    }

Subdomains

Frequently Asked Questions

What does WebSocketServerExtension() do?
WebSocketServerExtension() is a function in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/compression/PerMessageDeflateServerExtensionHandshaker.java.
Where is WebSocketServerExtension() defined?
WebSocketServerExtension() is defined in codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/compression/PerMessageDeflateServerExtensionHandshaker.java at line 205.
What does WebSocketServerExtension() call?
WebSocketServerExtension() calls 1 function(s): PermessageDeflateExtension.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free