public static Frame from(int streamId, int requestN) { if (requestN < 1) { throw new IllegalStateException("request n must be greater than 0"); } final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer(RequestNFrameFlyweight.computeFrameLength()); frame.content.writerIndex(RequestNFrameFlyweight.encode(frame.content, streamId, requestN)); return frame; }
public static int requestN(final Frame frame) { ensureFrameType(FrameType.REQUEST_N, frame); return RequestNFrameFlyweight.requestN(frame.content); } }
@Test public void testEncoding() { int encoded = RequestNFrameFlyweight.encode(byteBuf, 1, 5); assertEquals("00000a00000001200000000005", ByteBufUtil.hexDump(byteBuf, 0, encoded)); } }
public static int encode(final ByteBuf byteBuf, final int streamId, final int requestN) { final int frameLength = computeFrameLength(); int length = FrameHeaderFlyweight.encodeFrameHeader( byteBuf, frameLength, 0, FrameType.REQUEST_N, streamId); byteBuf.setInt(REQUEST_N_FIELD_OFFSET, requestN); return length + Integer.BYTES; }
private static int payloadOffset(final ByteBuf byteBuf) { int typeAndFlags = byteBuf.getShort(FRAME_TYPE_AND_FLAGS_FIELD_OFFSET); FrameType frameType = FrameType.fromEncodedType(typeAndFlags >> FRAME_TYPE_SHIFT); int result = PAYLOAD_OFFSET; switch (frameType) { case SETUP: result = SetupFrameFlyweight.payloadOffset(byteBuf); break; case ERROR: result = ErrorFrameFlyweight.payloadOffset(byteBuf); break; case LEASE: result = LeaseFrameFlyweight.payloadOffset(byteBuf); break; case KEEPALIVE: result = KeepaliveFrameFlyweight.payloadOffset(byteBuf); break; case REQUEST_RESPONSE: case REQUEST_FNF: case REQUEST_STREAM: case REQUEST_CHANNEL: result = RequestFrameFlyweight.payloadOffset(frameType, byteBuf); break; case REQUEST_N: result = RequestNFrameFlyweight.payloadOffset(byteBuf); break; } return result; }
public static int encode(final ByteBuf byteBuf, final int streamId, final int requestN) { final int frameLength = computeFrameLength(); int length = FrameHeaderFlyweight.encodeFrameHeader( byteBuf, frameLength, 0, FrameType.REQUEST_N, streamId); byteBuf.setInt(REQUEST_N_FIELD_OFFSET, requestN); return length + Integer.BYTES; }
private static int payloadOffset(final ByteBuf byteBuf) { int typeAndFlags = byteBuf.getShort(FRAME_TYPE_AND_FLAGS_FIELD_OFFSET); FrameType frameType = FrameType.fromEncodedType(typeAndFlags >> FRAME_TYPE_SHIFT); int result = PAYLOAD_OFFSET; switch (frameType) { case SETUP: result = SetupFrameFlyweight.payloadOffset(byteBuf); break; case ERROR: result = ErrorFrameFlyweight.payloadOffset(byteBuf); break; case LEASE: result = LeaseFrameFlyweight.payloadOffset(byteBuf); break; case KEEPALIVE: result = KeepaliveFrameFlyweight.payloadOffset(byteBuf); break; case REQUEST_RESPONSE: case REQUEST_FNF: case REQUEST_STREAM: case REQUEST_CHANNEL: result = RequestFrameFlyweight.payloadOffset(frameType, byteBuf); break; case REQUEST_N: result = RequestNFrameFlyweight.payloadOffset(byteBuf); break; } return result; }
public static Frame from(int streamId, int requestN) { if (requestN < 1) { throw new IllegalStateException("request n must be greater than 0"); } final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer(RequestNFrameFlyweight.computeFrameLength()); frame.content.writerIndex(RequestNFrameFlyweight.encode(frame.content, streamId, requestN)); return frame; }
public static int requestN(final Frame frame) { ensureFrameType(FrameType.REQUEST_N, frame); return RequestNFrameFlyweight.requestN(frame.content); } }