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);
}
}
}