public static Frame from(int ttl, int numberOfRequests, ByteBuf metadata) { final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer( LeaseFrameFlyweight.computeFrameLength(metadata.readableBytes())); frame.content.writerIndex( LeaseFrameFlyweight.encode(frame.content, ttl, numberOfRequests, metadata)); return frame; }
public static int numberOfRequests(final Frame frame) { ensureFrameType(FrameType.LEASE, frame); return LeaseFrameFlyweight.numRequests(frame.content); } }
public static int ttl(final Frame frame) { ensureFrameType(FrameType.LEASE, frame); return LeaseFrameFlyweight.ttl(frame.content); }
@Test public void size() { ByteBuf metadata = Unpooled.wrappedBuffer(new byte[] {1, 2, 3, 4}); int length = LeaseFrameFlyweight.encode(byteBuf, 0, 0, metadata); assertEquals(length, 9 + 4 * 2 + 4); // Frame header + ttl + #requests + 4 byte metadata }
public static int encode( final ByteBuf byteBuf, final int ttl, final int numRequests, final ByteBuf metadata) { final int frameLength = computeFrameLength(metadata.readableBytes()); int length = FrameHeaderFlyweight.encodeFrameHeader(byteBuf, frameLength, 0, FrameType.LEASE, 0); byteBuf.setInt(TTL_FIELD_OFFSET, ttl); byteBuf.setInt(NUM_REQUESTS_FIELD_OFFSET, numRequests); length += Integer.BYTES * 2; length += FrameHeaderFlyweight.encodeMetadata(byteBuf, FrameType.LEASE, length, metadata); return length; }
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; }
@Test public void testEncoding() { int encoded = LeaseFrameFlyweight.encode( byteBuf, 0, 0, Unpooled.copiedBuffer("md", StandardCharsets.UTF_8)); assertEquals( "00001000000000090000000000000000006d64", ByteBufUtil.hexDump(byteBuf, 0, encoded)); } }
public static int encode( final ByteBuf byteBuf, final int ttl, final int numRequests, final ByteBuf metadata) { final int frameLength = computeFrameLength(metadata.readableBytes()); int length = FrameHeaderFlyweight.encodeFrameHeader(byteBuf, frameLength, 0, FrameType.LEASE, 0); byteBuf.setInt(TTL_FIELD_OFFSET, ttl); byteBuf.setInt(NUM_REQUESTS_FIELD_OFFSET, numRequests); length += Integer.BYTES * 2; length += FrameHeaderFlyweight.encodeMetadata(byteBuf, FrameType.LEASE, length, metadata); return length; }
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 ttl, int numberOfRequests, ByteBuf metadata) { final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer( LeaseFrameFlyweight.computeFrameLength(metadata.readableBytes())); frame.content.writerIndex( LeaseFrameFlyweight.encode(frame.content, ttl, numberOfRequests, metadata)); return frame; }
public static int numberOfRequests(final Frame frame) { ensureFrameType(FrameType.LEASE, frame); return LeaseFrameFlyweight.numRequests(frame.content); } }
public static int ttl(final Frame frame) { ensureFrameType(FrameType.LEASE, frame); return LeaseFrameFlyweight.ttl(frame.content); }