public void printPayload()

in httpcore5-h2/src/main/java/org/apache/hc/core5/http2/frame/FramePrinter.java [96:177]


    public void printPayload(final RawFrame frame, final Appendable appendable) throws IOException {

        final FrameType type = FrameType.valueOf(frame.getType());
        final ByteBuffer buf = frame.getPayloadContent();
        if (buf != null) {

            switch (type) {
                case SETTINGS:
                    if ((buf.remaining() % 6) == 0) {
                        while (buf.hasRemaining()) {
                            final int code = buf.getShort();
                            final H2Param param = H2Param.valueOf(code);
                            final int value = buf.getInt();
                            if (param != null) {
                                appendable.append(param.name());
                            } else {
                                appendable.append("0x").append(Integer.toHexString(code));
                            }
                            appendable.append(": ").append(Integer.toString(value)).append("\r\n");
                        }
                    } else {
                        appendable.append("Invalid\r\n");
                    }
                    break;
                case RST_STREAM:
                    if (buf.remaining() == 4) {
                        appendable.append("Code ");
                        final int code = buf.getInt();
                        final H2Error error = H2Error.getByCode(code);
                        if (error != null) {
                            appendable.append(error.name());
                        } else {
                            appendable.append("0x").append(Integer.toHexString(code));
                        }
                        appendable.append("\r\n");
                    } else {
                        appendable.append("Invalid\r\n");
                    }
                    break;
                case GOAWAY:
                    if (buf.remaining() >= 8) {
                        final int lastStream = buf.getInt();
                        appendable.append("Last stream ").append(Integer.toString(lastStream)).append("\r\n");
                        appendable.append("Code ");
                        final int code2 = buf.getInt();
                        final H2Error error2 = H2Error.getByCode(code2);
                        if (error2 != null) {
                            appendable.append(error2.name());
                        } else {
                            appendable.append("0x").append(Integer.toHexString(code2));
                        }
                        appendable.append("\r\n");
                        final byte[] tmp = new byte[buf.remaining()];
                        buf.get(tmp);
                        appendable.append(new String(tmp, StandardCharsets.US_ASCII));
                        appendable.append("\r\n");
                    } else {
                        appendable.append("Invalid\r\n");
                    }
                    break;
                case WINDOW_UPDATE:
                    if (buf.remaining() == 4) {
                        final int increment = buf.getInt();
                        appendable.append("Increment ").append(Integer.toString(increment)).append("\r\n");
                    } else {
                        appendable.append("Invalid\r\n");
                    }
                    break;
                case PUSH_PROMISE:
                    if (buf.remaining() > 4) {
                        final int streamId = buf.getInt();
                        appendable.append("Promised stream ").append(Integer.toString(streamId)).append("\r\n");
                        printData(buf, appendable);
                    } else {
                        appendable.append("Invalid\r\n");
                    }
                    break;
                default:
                    printData(frame.getPayload(), appendable);
            }
        }
    }