public void write(final RawFrame frame, final WritableByteChannel channel) throws IOException { Args.notNull(frame, "Frame"); final ByteBuffer payload = frame.getPayload(); if (payload != null && payload.remaining() > maxFramePayloadSize) { throw new H2ConnectionException(H2Error.FRAME_SIZE_ERROR, "Frame size exceeds maximum"); } buffer.putInt((payload != null ? payload.remaining() << 8 : 0) | (frame.getType() & 0xff)); buffer.put((byte) (frame.getFlags() & 0xff)); buffer.putInt(frame.getStreamId()); if (payload != null) { if (channel instanceof GatheringByteChannel) { buffer.flip(); ((GatheringByteChannel) channel).write(new ByteBuffer[]{buffer, payload}); buffer.compact(); if (payload.hasRemaining()) { buffer.put(payload); } } else { buffer.put(payload); } } flush(channel); metrics.incrementFramesTransferred(); }
printData(frame.getPayload(), appendable);
final ByteBuffer payload = frame.getPayload(); if (payload == null || payload.remaining() != 4) { throw new H2ConnectionException(H2Error.FRAME_SIZE_ERROR, "Invalid WINDOW_UPDATE frame payload"); final ByteBuffer payload = frame.getPayload(); if (payload == null || payload.remaining() != 4) { throw new H2ConnectionException(H2Error.FRAME_SIZE_ERROR, "Invalid RST_STREAM frame payload"); final ByteBuffer payload = frame.getPayload(); if (payload != null) { if ((payload.remaining() % 6) != 0) { throw new H2ConnectionException(H2Error.PROTOCOL_ERROR, "Illegal stream id"); final ByteBuffer payload = frame.getPayload(); if (payload == null || payload.remaining() < 8) { throw new H2ConnectionException(H2Error.FRAME_SIZE_ERROR, "Invalid GOAWAY payload");
final long streamId = frame.getStreamId(); final int flags = frame.getFlags(); final ByteBuffer payload = frame.getPayload(); final int payloadLen = payload != null ? payload.remaining() : 0; if (payload != null && payload.remaining() > maxFramePayloadSize) {
private void consumeContinuationFrame(final RawFrame frame, final Http2Stream stream) throws HttpException, IOException { final int streamId = frame.getStreamId(); final ByteBuffer payload = frame.getPayload(); continuation.copyPayload(payload); if (frame.isFlagSet(FrameFlag.END_HEADERS)) {