Home / Function/ handlePotentialUpgrade() — netty Function Reference

handlePotentialUpgrade() — netty Function Reference

Architecture documentation for the handlePotentialUpgrade() function in WebSocketServerExtensionHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  9086a7ff_2993_4d2a_e3f4_c633a73db191["handlePotentialUpgrade()"]
  6784d673_612f_ff75_025d_f5a9bf196079["WebSocketServerExtensionHandler"]
  9086a7ff_2993_4d2a_e3f4_c633a73db191 -->|defined in| 6784d673_612f_ff75_025d_f5a9bf196079
  96bb3d12_072a_e0a4_aff1_8ed0a900a632["onHttpResponseWrite()"]
  96bb3d12_072a_e0a4_aff1_8ed0a900a632 -->|calls| 9086a7ff_2993_4d2a_e3f4_c633a73db191
  style 9086a7ff_2993_4d2a_e3f4_c633a73db191 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/WebSocketServerExtensionHandler.java lines 209–246

    private void handlePotentialUpgrade(final ChannelHandlerContext ctx,
                                        ChannelPromise promise, HttpResponse httpResponse,
                                        final List<WebSocketServerExtension> validExtensionsList) {
        HttpHeaders headers = httpResponse.headers();

        if (WebSocketExtensionUtil.isWebsocketUpgrade(headers)) {
            if (validExtensionsList != null && !validExtensionsList.isEmpty()) {
                String headerValue = headers.getAsString(HttpHeaderNames.SEC_WEBSOCKET_EXTENSIONS);
                List<WebSocketExtensionData> extraExtensions =
                  new ArrayList<>(extensionHandshakers.size());
                for (WebSocketServerExtension extension : validExtensionsList) {
                    extraExtensions.add(extension.newReponseData());
                }
                String newHeaderValue = WebSocketExtensionUtil
                  .computeMergeExtensionsHeaderValue(headerValue, extraExtensions);
                promise.addListener(future -> {
                    if (future.isSuccess()) {
                        for (WebSocketServerExtension extension : validExtensionsList) {
                            WebSocketExtensionDecoder decoder = extension.newExtensionDecoder();
                            WebSocketExtensionEncoder encoder = extension.newExtensionEncoder();
                            String name = ctx.name();
                            ctx.pipeline()
                                .addAfter(name, decoder.getClass().getName(), decoder)
                                .addAfter(name, encoder.getClass().getName(), encoder);
                        }
                    }
                });

                headers.set(HttpHeaderNames.SEC_WEBSOCKET_EXTENSIONS, newHeaderValue);
            }

            promise.addListener(future -> {
                if (future.isSuccess()) {
                    ctx.pipeline().remove(WebSocketServerExtensionHandler.this);
                }
            });
        }
    }

Subdomains

Frequently Asked Questions

What does handlePotentialUpgrade() do?
handlePotentialUpgrade() is a function in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/WebSocketServerExtensionHandler.java.
Where is handlePotentialUpgrade() defined?
handlePotentialUpgrade() is defined in codec-http/src/main/java/io/netty/handler/codec/http/websocketx/extensions/WebSocketServerExtensionHandler.java at line 209.
What calls handlePotentialUpgrade()?
handlePotentialUpgrade() is called by 1 function(s): onHttpResponseWrite.

Analyze Your Own Codebase

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

Try Supermodel Free