public static Frame from(int streamId, FrameType type, Payload payload) { return from(streamId, type, payload, payload.hasMetadata() ? FLAGS_M : 0); }
public static Payload create(Payload payload) { return create( payload.sliceData().retain(), payload.hasMetadata() ? payload.sliceMetadata().retain() : null); } }
public static Payload create(Payload payload) { return create( Unpooled.copiedBuffer(payload.sliceData()), payload.hasMetadata() ? Unpooled.copiedBuffer(payload.sliceMetadata()) : null); } }
public static Frame from(int streamId, FrameType type, Payload payload, int flags) { final ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : null; final ByteBuf data = payload.sliceData(); return from(streamId, type, metadata, data, flags); }
public void assertDataAndMetadata(Payload p, String dataVal, String metadataVal) { assertThat("Unexpected data.", p.getDataUtf8(), equalTo(dataVal)); if (metadataVal == null) { assertThat("Non-null metadata", p.hasMetadata(), equalTo(false)); } else { assertThat("Null metadata", p.hasMetadata(), equalTo(true)); assertThat("Unexpected metadata.", p.getMetadataUtf8(), equalTo(metadataVal)); } }
public static Frame from(int streamId, FrameType type, Payload payload, int initialRequestN) { if (initialRequestN < 1) { throw new IllegalStateException("initial request n must be greater than 0"); } final @Nullable ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : null; final ByteBuf data = payload.sliceData(); final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer( RequestFrameFlyweight.computeFrameLength( type, metadata != null ? metadata.readableBytes() : null, data.readableBytes())); if (type.hasInitialRequestN()) { frame.content.writerIndex( RequestFrameFlyweight.encode( frame.content, streamId, metadata != null ? FLAGS_M : 0, type, initialRequestN, metadata, data)); } else { frame.content.writerIndex( RequestFrameFlyweight.encode( frame.content, streamId, metadata != null ? FLAGS_M : 0, type, metadata, data)); } return frame; }
Payload payload) { final ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : Unpooled.EMPTY_BUFFER; final ByteBuf data = payload.sliceData();
private void handleRequestResponse(int streamId, Mono<Payload> response) { response .doOnSubscribe(subscription -> sendingSubscriptions.put(streamId, subscription)) .map( payload -> { int flags = FLAGS_C; if (payload.hasMetadata()) { flags = Frame.setFlag(flags, FLAGS_M); } final Frame frame = Frame.PayloadFrame.from(streamId, FrameType.NEXT_COMPLETE, payload, flags); payload.release(); return frame; }) .switchIfEmpty( Mono.fromCallable(() -> Frame.PayloadFrame.from(streamId, FrameType.COMPLETE))) .doFinally(signalType -> sendingSubscriptions.remove(streamId)) .subscribe(sendProcessor::onNext, t -> handleError(streamId, t)); }
@Test public void testEncodingWithNullMetadata() { int encoded = RequestFrameFlyweight.encode( byteBuf, 1, 0, FrameType.REQUEST_STREAM, 1, null, Unpooled.copiedBuffer("d", StandardCharsets.UTF_8)); assertEquals("00000b0000000118000000000164", ByteBufUtil.hexDump(byteBuf, 0, encoded)); Payload payload = DefaultPayload.create(Frame.from(stringToBuf("00000b0000000118000000000164"))); assertFalse(payload.hasMetadata()); }
public static Frame from(int streamId, FrameType type, Payload payload) { return from(streamId, type, payload, payload.hasMetadata() ? FLAGS_M : 0); }
public static Payload create(Payload payload) { return create( Unpooled.copiedBuffer(payload.sliceData()), payload.hasMetadata() ? Unpooled.copiedBuffer(payload.sliceMetadata()) : null); } }
public static Payload create(Payload payload) { return create( payload.sliceData().retain(), payload.hasMetadata() ? payload.sliceMetadata().retain() : null); } }
public static Frame from(int streamId, FrameType type, Payload payload, int flags) { final ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : null; final ByteBuf data = payload.sliceData(); return from(streamId, type, metadata, data, flags); }
Payload payload) { final ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : Unpooled.EMPTY_BUFFER; final ByteBuf data = payload.sliceData();
public static Frame from(int streamId, FrameType type, Payload payload, int initialRequestN) { if (initialRequestN < 1) { throw new IllegalStateException("initial request n must be greater than 0"); } final @Nullable ByteBuf metadata = payload.hasMetadata() ? payload.sliceMetadata() : null; final ByteBuf data = payload.sliceData(); final Frame frame = RECYCLER.get(); frame.setRefCnt(1); frame.content = ByteBufAllocator.DEFAULT.buffer( RequestFrameFlyweight.computeFrameLength( type, metadata != null ? metadata.readableBytes() : null, data.readableBytes())); if (type.hasInitialRequestN()) { frame.content.writerIndex( RequestFrameFlyweight.encode( frame.content, streamId, metadata != null ? FLAGS_M : 0, type, initialRequestN, metadata, data)); } else { frame.content.writerIndex( RequestFrameFlyweight.encode( frame.content, streamId, metadata != null ? FLAGS_M : 0, type, metadata, data)); } return frame; }
private void handleRequestResponse(int streamId, Mono<Payload> response) { response .doOnSubscribe(subscription -> sendingSubscriptions.put(streamId, subscription)) .map( payload -> { int flags = FLAGS_C; if (payload.hasMetadata()) { flags = Frame.setFlag(flags, FLAGS_M); } final Frame frame = Frame.PayloadFrame.from(streamId, FrameType.NEXT_COMPLETE, payload, flags); payload.release(); return frame; }) .switchIfEmpty( Mono.fromCallable(() -> Frame.PayloadFrame.from(streamId, FrameType.COMPLETE))) .doFinally(signalType -> sendingSubscriptions.remove(streamId)) .subscribe(sendProcessor::onNext, t -> handleError(streamId, t)); }