Home / Class/ SpdyHttpResponseStreamIdHandler Class — netty Architecture

SpdyHttpResponseStreamIdHandler Class — netty Architecture

Architecture documentation for the SpdyHttpResponseStreamIdHandler class in SpdyHttpResponseStreamIdHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1["SpdyHttpResponseStreamIdHandler"]
  432b59f8_5e47_95c3_f2c2_37b649bd7b8c["SpdyHttpResponseStreamIdHandler.java"]
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1 -->|defined in| 432b59f8_5e47_95c3_f2c2_37b649bd7b8c
  e8ef8b2d_d111_0722_65a6_751a42c53c44["SpdyHttpResponseStreamIdHandler()"]
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1 -->|method| e8ef8b2d_d111_0722_65a6_751a42c53c44
  437aff7b_0114_cb75_2581_50e43025431f["acceptInboundMessage()"]
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1 -->|method| 437aff7b_0114_cb75_2581_50e43025431f
  656c6adf_eaac_8297_c802_85f8b56ccb72["encode()"]
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1 -->|method| 656c6adf_eaac_8297_c802_85f8b56ccb72
  ec40cfc6_a422_59cd_081e_6541109d600d["decode()"]
  ada1cbd9_2a06_e5f3_e6aa_cfcab58b75c1 -->|method| ec40cfc6_a422_59cd_081e_6541109d600d

Relationship Graph

Source Code

codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyHttpResponseStreamIdHandler.java lines 33–72

public class SpdyHttpResponseStreamIdHandler extends
        MessageToMessageCodec<Object, HttpMessage> {
    private static final Integer NO_ID = -1;
    private final Queue<Integer> ids = new ArrayDeque<Integer>();

    public SpdyHttpResponseStreamIdHandler() {
        super(Object.class, HttpMessage.class);
    }

    @Override
    public boolean acceptInboundMessage(Object msg) throws Exception {
        return msg instanceof HttpMessage || msg instanceof SpdyRstStreamFrame;
    }

    @Override
    protected void encode(ChannelHandlerContext ctx, HttpMessage msg, List<Object> out) throws Exception {
        Integer id = ids.poll();
        if (id != null && id.intValue() != NO_ID && !msg.headers().contains(SpdyHttpHeaders.Names.STREAM_ID)) {
            msg.headers().setInt(Names.STREAM_ID, id);
        }

        out.add(ReferenceCountUtil.retain(msg));
    }

    @Override
    protected void decode(ChannelHandlerContext ctx, Object msg, List<Object> out) throws Exception {
        if (msg instanceof HttpMessage) {
            boolean contains = ((HttpMessage) msg).headers().contains(SpdyHttpHeaders.Names.STREAM_ID);
            if (!contains) {
                ids.add(NO_ID);
            } else {
                ids.add(((HttpMessage) msg).headers().getInt(Names.STREAM_ID));
            }
        } else if (msg instanceof SpdyRstStreamFrame) {
            ids.remove(((SpdyRstStreamFrame) msg).streamId());
        }

        out.add(ReferenceCountUtil.retain(msg));
    }
}

Frequently Asked Questions

What is the SpdyHttpResponseStreamIdHandler class?
SpdyHttpResponseStreamIdHandler is a class in the netty codebase, defined in codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyHttpResponseStreamIdHandler.java.
Where is SpdyHttpResponseStreamIdHandler defined?
SpdyHttpResponseStreamIdHandler is defined in codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyHttpResponseStreamIdHandler.java at line 33.

Analyze Your Own Codebase

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

Try Supermodel Free