public RawFrame createResetStream(final int streamId, final int code) { Args.positive(streamId, "Stream id"); final ByteBuffer payload = ByteBuffer.allocate(4); payload.putInt(code); payload.flip(); return new RawFrame(FrameType.RST_STREAM.getValue(), 0, streamId, payload); }
public static String toString(final int value) { if (value < 0 || value >= LOOKUP_TABLE.length) { return Integer.toString(value); } return LOOKUP_TABLE[value].name(); }
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) {
public void printFrameInfo(final RawFrame frame, final Appendable appendable) throws IOException { appendable.append("stream ").append(Integer.toString(frame.getStreamId())).append(" frame: "); final FrameType type = FrameType.valueOf(frame.getType()); appendable.append(Objects.toString(type)) .append(" (0x").append(Integer.toHexString(frame.getType())).append("); flags: ");
public RawFrame createGoAway(final int lastStream, final H2Error error, final String message) { Args.notNegative(lastStream, "Last stream id"); final byte[] debugData = message != null ? message.getBytes(StandardCharsets.US_ASCII) : null; final ByteBuffer payload = ByteBuffer.allocate(8 + (debugData != null ? debugData.length : 0)); payload.putInt(lastStream); payload.putInt(error.getCode()); if (debugData != null) { payload.put(debugData); } payload.flip(); return new RawFrame(FrameType.GOAWAY.getValue(), 0, 0, payload); }
private void consumeFrame(final RawFrame frame) throws HttpException, IOException { final FrameType frameType = FrameType.valueOf(frame.getType()); final int streamId = frame.getStreamId(); if (continuation != null && frameType != FrameType.CONTINUATION) {
public RawFrame createSettings(final H2Setting... settings) { final ByteBuffer payload = ByteBuffer.allocate(settings.length * 12); for (final H2Setting setting: settings) { payload.putShort((short) setting.getCode()); payload.putInt(setting.getValue()); } payload.flip(); return new RawFrame(FrameType.SETTINGS.getValue(), 0, 0, payload); }
public RawFrame createWindowUpdate(final int streamId, final int increment) { Args.notNegative(streamId, "Stream id"); Args.positive(increment, "Increment"); final ByteBuffer payload = ByteBuffer.allocate(4); payload.putInt(increment); payload.flip(); return new RawFrame(FrameType.WINDOW_UPDATE.getValue(), 0, streamId, payload); }
@Override public RawFrame createContinuation(final int streamId, final ByteBuffer payload, final boolean endHeaders) { Args.positive(streamId, "Stream id"); final int flags = (endHeaders ? FrameFlag.END_HEADERS.value : 0); return new RawFrame(FrameType.CONTINUATION.getValue(), flags, streamId, payload); }
@Override public RawFrame createHeaders(final int streamId, final ByteBuffer payload, final boolean endHeaders, final boolean endStream) { Args.positive(streamId, "Stream id"); final int flags = (endHeaders ? FrameFlag.END_HEADERS.value : 0) | (endStream ? FrameFlag.END_STREAM.value : 0); return new RawFrame(FrameType.HEADERS.getValue(), flags, streamId, payload); }
@Override public RawFrame createPushPromise(final int streamId, final ByteBuffer payload, final boolean endHeaders) { Args.positive(streamId, "Stream id"); final int flags = (endHeaders ? FrameFlag.END_HEADERS.value : 0); return new RawFrame(FrameType.PUSH_PROMISE.getValue(), flags, streamId, payload); }
@Override public RawFrame createData(final int streamId, final ByteBuffer payload, final boolean endStream) { Args.positive(streamId, "Stream id"); final int flags = (endStream ? FrameFlag.END_STREAM.value : 0); return new RawFrame(FrameType.DATA.getValue(), flags, streamId, payload); }
public RawFrame createSettingsAck() { return new RawFrame(FrameType.SETTINGS.getValue(), FrameFlag.ACK.getValue(), 0, null); }
public RawFrame createPingAck(final ByteBuffer opaqueData) { Args.notNull(opaqueData, "Opaque data"); Args.check(opaqueData.remaining() == 8, "Opaque data length must be equal 8"); return new RawFrame(FrameType.PING.getValue(), FrameFlag.ACK.value, 0, opaqueData); }
public RawFrame createPing(final ByteBuffer opaqueData) { Args.notNull(opaqueData, "Opaque data"); Args.check(opaqueData.remaining() == 8, "Opaque data length must be equal 8"); return new RawFrame(FrameType.PING.getValue(), 0, 0, opaqueData); }
stream.setRemoteEndStream(); if (continuation.type == FrameType.PUSH_PROMISE.getValue()) { stream.consumePromise(headers); } else {