Home / Class/ ConsumedBytesConverter Class — netty Architecture

ConsumedBytesConverter Class — netty Architecture

Architecture documentation for the ConsumedBytesConverter class in DelegatingDecompressorFrameListener.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359["ConsumedBytesConverter"]
  cdec0447_51ad_ffa5_e1e6_2257690237d4["DelegatingDecompressorFrameListener.java"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|defined in| cdec0447_51ad_ffa5_e1e6_2257690237d4
  c9cdff4c_da69_9aa2_b935_e6ba7f270975["ConsumedBytesConverter()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| c9cdff4c_da69_9aa2_b935_e6ba7f270975
  b70b65f0_f69b_7e78_8719_754097a3f837["Http2LocalFlowController()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| b70b65f0_f69b_7e78_8719_754097a3f837
  3df6275f_2fe1_c93f_4462_bafaa9f15952["channelHandlerContext()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 3df6275f_2fe1_c93f_4462_bafaa9f15952
  52ea517b_42ef_8062_46cc_fd49a18242b2["initialWindowSize()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 52ea517b_42ef_8062_46cc_fd49a18242b2
  8be0d496_7129_ec64_e60c_01e1aeeb6035["windowSize()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 8be0d496_7129_ec64_e60c_01e1aeeb6035
  4050efac_803f_1055_e456_5a0faf75beff["incrementWindowSize()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 4050efac_803f_1055_e456_5a0faf75beff
  db9935aa_54d8_b68b_f11d_46daa46d6300["receiveFlowControlledFrame()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| db9935aa_54d8_b68b_f11d_46daa46d6300
  9cfe131c_a545_603f_e1f1_9635e11cff4e["consumeBytes()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 9cfe131c_a545_603f_e1f1_9635e11cff4e
  04e88b45_2756_828f_9924_87ff23c8df4c["unconsumedBytes()"]
  998fc2ae_88e4_7eb3_dcc9_7f7b916cf359 -->|method| 04e88b45_2756_828f_9924_87ff23c8df4c

Relationship Graph

Source Code

codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java lines 290–360

    private final class ConsumedBytesConverter implements Http2LocalFlowController {
        private final Http2LocalFlowController flowController;

        ConsumedBytesConverter(Http2LocalFlowController flowController) {
            this.flowController = checkNotNull(flowController, "flowController");
        }

        @Override
        public Http2LocalFlowController frameWriter(Http2FrameWriter frameWriter) {
            return flowController.frameWriter(frameWriter);
        }

        @Override
        public void channelHandlerContext(ChannelHandlerContext ctx) throws Http2Exception {
            flowController.channelHandlerContext(ctx);
        }

        @Override
        public void initialWindowSize(int newWindowSize) throws Http2Exception {
            flowController.initialWindowSize(newWindowSize);
        }

        @Override
        public int initialWindowSize() {
            return flowController.initialWindowSize();
        }

        @Override
        public int windowSize(Http2Stream stream) {
            return flowController.windowSize(stream);
        }

        @Override
        public void incrementWindowSize(Http2Stream stream, int delta) throws Http2Exception {
            flowController.incrementWindowSize(stream, delta);
        }

        @Override
        public void receiveFlowControlledFrame(Http2Stream stream, ByteBuf data, int padding,
                boolean endOfStream) throws Http2Exception {
            flowController.receiveFlowControlledFrame(stream, data, padding, endOfStream);
        }

        @Override
        public boolean consumeBytes(Http2Stream stream, int numBytes) throws Http2Exception {
            Http2Decompressor decompressor = decompressor(stream);
            if (decompressor != null) {
                // Convert the decompressed bytes to compressed (on the wire) bytes.
                numBytes = decompressor.consumeBytes(stream.id(), numBytes);
            }
            try {
                return flowController.consumeBytes(stream, numBytes);
            } catch (Http2Exception e) {
                throw e;
            } catch (Throwable t) {
                // The stream should be closed at this point. We have already changed our state tracking the compressed
                // bytes, and there is no guarantee we can recover if the underlying flow controller throws.
                throw streamError(stream.id(), INTERNAL_ERROR, t, "Error while returning bytes to flow control window");
            }
        }

        @Override
        public int unconsumedBytes(Http2Stream stream) {
            return flowController.unconsumedBytes(stream);
        }

        @Override
        public int initialWindowSize(Http2Stream stream) {
            return flowController.initialWindowSize(stream);
        }
    }

Frequently Asked Questions

What is the ConsumedBytesConverter class?
ConsumedBytesConverter is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java.
Where is ConsumedBytesConverter defined?
ConsumedBytesConverter is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DelegatingDecompressorFrameListener.java at line 290.

Analyze Your Own Codebase

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

Try Supermodel Free